Php 如何处理curl403禁止的错误?有什么解决办法吗?

Php 如何处理curl403禁止的错误?有什么解决办法吗?,php,curl,Php,Curl,我正在使用multi-curl从远程站点获取数据。我的剧本就像 foreach ($urls as $i => $url) { $ch[$i] = curl_init($url['url']); curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0); curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1); curl_setop

我正在使用multi-curl从远程站点获取数据。我的剧本就像

foreach ($urls as $i => $url) {
            $ch[$i] = curl_init($url['url']);
            curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0);
            curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0);
            curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false);
            curl_multi_add_handle($multiCurlHandler, $ch[$i]);
}
它返回403禁止作为响应


提前感谢您的建议和评论。

只需为用户代理添加两行代码,看看是否有效。 有些服务器不接受来自脚本的请求,这取决于用户代理

// line 1
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

foreach ($urls as $i => $url) {
    $ch[$i] = curl_init($url['url']);
    curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0);
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0);

    // line 2
    curl_setopt($ch[$i], CURLOPT_USERAGENT, $agent);

    curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false);
    curl_multi_add_handle($multiCurlHandler, $ch[$i]);
}

联系您试图连接的网站的运营商,并询问他们您的请求被禁止的原因


然后,您可以停止(如果他们认为您的操作不可接受)或更改请求,使其符合他们的规则。

尝试设置Referer和User Agent头,但是

。。。将CURLOPT_SSL_VERIFYPEER设置为false是危险的,不应在生产中进行。至少在某种类型的is_dev检查中包装该行


您这样做是在破坏SSL的目的,允许攻击者拦截您的请求并返回他们喜欢的内容,而无需验证他们的SSL证书。

Sanjay的可能总是有用的。但是当客户端IP被服务器端阻塞时,在客户端执行curl也会得到此错误。

我通过删除下线来解决问题。

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

什么是
$url['url']
?这都是关于远程服务器的,它与cURL没有什么关系。您是否正在尝试使用web服务、查看网页等?