1

我尝试使用 file_get_contents() 解析网站的 html。

我从我的网站运行代码。

起初它工作正常。但突然出现了这个错误:

Warning: file_get_contents(http://www.***.com/) [function.file-get-contents]: failed to open stream: HTTP request failed!

我尝试了其他网站,它工作正常。我从我的另一个网站运行代码,它工作正常。

所以我在这里搜索并使用了cURL代码:

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.***.com/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

但它只是返回一个空白页。

看起来我试图将内容阻止或将我的网站域列入黑名单的网站。

我有办法摆脱这个吗??

4

2 回答 2

3

您可以尝试找出连接被阻止的原因:

  • 基于 IP:他们阻止了您的服务器。
  • 基于用户代理:发送将您识别为机器人的用户代理。
  • 如果他们不喜欢你的机器人用户代理假装是别人的机器人,比如谷歌(邪恶
  • 如果他们阻止机器人,发送一个看起来像浏览器的用户代理(邪恶
  • 标识浏览器与脚本的其他一些参数。
于 2013-03-29T15:27:30.940 回答
1

您的服务器无法访问其他服务器

可能是 dns 问题、拼写错误或其他服务器阻止了您的 ip..

curl_error() 说什么?

顺便说一句,CURLOPT_CONNECTTIMEOUT 2 秒通常很小

于 2013-03-29T15:33:43.710 回答