【问题标题】:Problem with getting source code of a web page using PHP curl使用 PHP curl 获取网页源代码的问题
【发布时间】:2022-01-19 23:08:01
【问题描述】:

我在本地服务器中获取网页的源代码绝对没有问题:

$html = file_get_contents('https://opac.nlai.ir');

直到几天前,我在我的主机上也可以使用下面的代码:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, 'http://opac.nlai.ir');  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);  
$result = curl_exec($curl);

但是今天我发现现在该站点正在使用 ssl,它不再使用 http 并强制重定向到 https。所以我做了一些搜索并发现这是一个修复:

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($curl CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 

上面的代码适用于诸如网站之类的网站。 “https://google.com”(以及我尝试过的任何其他 https 网站!) 但不适用于该特定网站(“https://opac.nlai.ir”) 在这种情况下,页面加载大约需要一分钟(!),最后使用 var_dump($result) ,我得到“bool(false)” 我不知道该网站与其他网站有何不同,我真的很想知道导致问题的原因。

对不起我的英语。

【问题讨论】:

  • @Hesam 看起来他们的服务器有问题。不是你的错。我试图通过浏览器从两个不同的 IP 打开他们的页面,大约 2 分钟后都出现超时错误。
  • @masterguru 是的,看来服务器只响应特定的IP位置,所以我发现了问题!我的主机应该位于那个位置......或者是否有任何与 PHP curl 相关的解决方案?
  • 当然使用位于允许浏览站点的区域中的代理IP,您仍然可以使用cUrl。如果你发现任何检查这个帖子:How to use cUrl via a proxy
  • @masterguru 非常感谢!它现在通过代理工作

标签: php curl


【解决方案1】:

只需填写此答案即可记录。


正如问题 cmets 所述,您试图获取其源代码的网站由于您的服务器位置区域而阻止了您的请求(执行请求)。它似乎只响应特定的 IP 位置

@Hesam 验证的解决方案通过位于允许位置区域的代理 IP 使用 cUrl,他发现至少运行良好。

他按照其他 SO 帖子中的说明进行操作: How ot use cUrl via a proxy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多