运维日志您现在的位置是:首页 > 博客日志 > 运维日志

关于php:如何解决cURL错误(7):无法连接到主机?

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-11-19运维日志 1 0关键字:   

需要注册的是,如果你从一开始就遇到错误(7),可以从各方面来检查原因;如果开始的时候是可以成功请求的,但是后来就出错了,可能先遇到52、56等错误,再继续请求,就是错误(7)了;这是因为服务器把你的ip给封了,通常是为了防采集。

需要注意的是,如果你从一开始就遇到错误(7),可以从各方面来检查原因;如果开始的时候是可以成功请求的,但是后来就出错了,可能先遇到52、56等错误,再继续请求,就是错误(7)了;这是因为目标服务器把你的ip给封了,通常是为了防采集。axj无知


axj无知

如果解决呢?axj无知

从一开始就要小心的用,比如每次请求之间加一个延迟:axj无知

$scnd = mt_rand (2000000,5000000);
    echo "<br><br>延迟 sleep(" . $scnd . ");微秒";
    usleep($scnd);

以上代码会随机增加 2 到 5 秒的延迟。axj无知


axj无知

但是axj无知

如果已经被目标服务器把ip给封了怎么办呢?axj无知

这就只能通过代理服务器解决了。axj无知

相关代码:axj无知

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
$proxy = "http://123.123.123.123:8080";
curl_setopt($curl, CURLOPT_PROXY, $proxy);//设置通过的HTTP代理服务器
$headers = array("referer: http://www.abc.com/", "X-Forwarded-For:123.123.123.123", "CLIENT-iP:123.123.123.123");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

2023-05-02 更新axj无知

注意:访问 https 开头的地址,可能会因为网站的证书不被识别,证书过期等问题导致错误,添加以下代码可以解决:axj无知

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);


axj无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/service/2022-11-19/1598.html

很赞哦! () 有话说 ()

相关文章