【发布时间】: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 非常感谢!它现在通过代理工作