要重新啓動我的路由器,我可以訪問網頁192.168.1.1/tools.lp並單擊重啓按鈕。PHP如何使用curl來模擬網頁中的用戶操作
這是網頁
<form name="gwRestart" method="post" action="restartingAG.lp">
<input type="hidden" name="action" id="restartAction" value="saveRestart" />
<table border='0' cellspacing='0' cellpadding='0' width='100%' style="text-align:center">
<tr>
<td>
<a href="javascript:document.gwRestart.submit();">
<div class="midarea7-1 mainButton">RESTART</div></a>
</td><td> </td>
</tr>
</table>
</form>
我會用一個PHP頁面重新啓動我的路由器的代碼,我試圖用捲曲做這樣
$post_data['action'] = 'saveRestart';
//traverse array and prepare data for posting (key1=value1)
foreach ($post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$ch = curl_init('http://192.168.1.1/restartingAG.lp');
//set options
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
//set data to be posted
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($ch);
//show information regarding the request
print_r(curl_getinfo($ch));
//echo curl_errno($ch) . '-' . curl_error($ch);
//close the connection
curl_close($ch);
不幸的是,我注意到,我的請求被重定向到index_auth.lp(登錄功能已禁用!)而不是所需的。
Array ([url] => http://192.168.1.1/index_auth.lp [content_type] => text/html [http_code] => 200 [header_size] => 858 [request_size] => 630 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 2 [total_time] => 1.216 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 7233 [speed_download] => 5948 [speed_upload] => 0 [download_content_length] => 7233 [upload_content_length] => 0 [starttransfer_time] => 0.53 [redirect_time] => 0.686 [redirect_url] => [primary_ip] => 192.168.1.1 [certinfo] => Array () [primary_port] => 80 [local_ip] => 192.168.1.5 [local_port] => 50687)
也許是因爲請求來自不同的ip?我可以以某種方式提出請求,就好像它是由用戶在網頁上創建的一樣嗎?謝謝
請求從本地主機制造或您的電腦的命令行?你需要先做一個curl請求來驗證,然後通過post – CatalinB
發送另一個curl請求來發送restart命令我通過QNAP嘗試了兩個localhost(WAMP)那個命令行 –
路由器頁面不需要驗證 –