关于php:如何解决cURL错误(7):无法连接到主机?
需要注册的是,如果你从一开始就遇到错误(7),可以从各方面来检查原因;如果开始的时候是可以成功请求的,但是后来就出错了,可能先遇到52、56等错误,再继续请求,就是错误(7)了;这是因为服务器把你的ip给封了,通常是为了防采集。
需要注意的是,如果你从一开始就遇到错误(7),可以从各方面来检查原因;如果开始的时候是可以成功请求的,但是后来就出错了,可能先遇到52、56等错误,再继续请求,就是错误(7)了;这是因为目标服务器把你的ip给封了,通常是为了防采集。
如果解决呢?
从一开始就要小心的用,比如每次请求之间加一个延迟:
$scnd = mt_rand (2000000,5000000); echo "<br><br>延迟 sleep(" . $scnd . ");微秒"; usleep($scnd);
以上代码会随机增加 2 到 5 秒的延迟。
但是
如果已经被目标服务器把ip给封了怎么办呢?
这就只能通过代理服务器解决了。
相关代码:
$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 更新
注意:访问 https 开头的地址,可能会因为网站的证书不被识别,证书过期等问题导致错误,添加以下代码可以解决:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/service/2022-11-19/1598.html