【问题标题】:file_get_contents not working for my domainfile_get_contents 不适用于我的域
【发布时间】:2013-03-20 07:55:30
【问题描述】:

我尝试使用 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);

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

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

我有办法摆脱这个吗??

【问题讨论】:

标签: php curl file-get-contents


【解决方案1】:

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

  • 基于 IP:他们阻止了您的服务器。
  • 基于用户代理:发送将您识别为机器人的用户代理。
  • 如果他们不喜欢您的机器人用户代理假装是别人的机器人,比如 Google (evil)
  • 如果他们阻止机器人,请发送一个看起来像浏览器的用户代理 (evil)
  • 标识浏览器与脚本的其他一些参数。

【讨论】:

    【解决方案2】:

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

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

    curl_error() 说什么?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-26
      • 2017-12-18
      相关资源
      最近更新 更多