[英]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.