[英]php curl hanging and infinite loop
我一直在研究一個抓取工具,該工具會抓取Google搜索結果,然后抓取那些希望與特定項目匹配的結果網站。
我在使用cURL時遇到問題。 我遇到了一個導致卷曲進入無限循環的站點。
有問題的網站。 http://www.darellyelectrical.com/
當我打開數據包嗅探器並通過tcp http數據包ive查找時,發現相同的請求一遍又一遍地發送。
我無法查明原因,我在任何其他網站上都沒有遇到麻煩。
我嘗試設置以下卷曲選項
curl_setopt($ this-> sessions [$ key],CURLOPT_TIMEOUT,$ timeout);
curl_setopt($ this-> sessions [$ key],CURLOPT_MAXREDIRS,2);
curl_setopt($ this-> sessions [$ key],CURLOPT_CONNECTTIMEOUT,1);
如果有人可以使用curl測試該網址,並告訴我問題是否仍然存在,那就太好了。
謝謝
編輯* *
function sck_send()
{
$host = "www.darellyelectrical.com";
$path = "";
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /".$path." HTTP/1.1\r\n";
$out .= "Host: ".$host."\r\n";
$out .= "Connection: Close\r\n\r\n";
$data = "";
fwrite($fp, $out);
while (!feof($fp))
{
$data .= fgets($fp, 128);
}
fclose($fp);
echo $data;
}
}
sck_send();
this will produce the loop same as curl.
該服務器需要包含User-Agent標頭,否則它沒有響應。 PHP的curl默認沒有設置,除非您指定,否則它不會包含在套接字請求中。 以下代碼對我有用:
<?php
function sck_send() {
$host = "www.darellyelectrical.com";
$path = "";
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /".$path." HTTP/1.1\r\n";
$out .= "Host: ".$host."\r\n";
$out .= "User-Agent: Mozilla/5.0 \r\n";
$out .= "Connection: Close\r\n\r\n";
$data = "";
fwrite($fp, $out);
while (!feof($fp)) {
$data .= fgets($fp, 128);
}
fclose($fp);
echo $data;
}
}
sck_send();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.