php curl返回400错误请求

时间:2019-07-16 16:26:30

标签: php curl http-status-code-400

伙计们。

我编写了一个脚本,使用代理从某些链接中获取内容。 如果您知道原因并提出建议,请帮助我。 谢谢

当我运行以下代码时,它将显示400错误代码。

$linkCheck = "https://www.uwgc.org/give/donor-networks/step-up-program/2016/03/14/oh-the-places-she's-going";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $linkCheck);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, $workingProxy['port']);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXY, $workingProxy['ip']);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $workingProxy['username'].':'.$workingProxy['password']);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 

$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error_report= curl_getinfo($ch);
curl_close($ch);

if($httpcode != 200){
        echo '<pre>' . $httpcode .'</pre>' ;
    return null;
}else{
    return $data;
}

预期行为:

获取给定链接的正确内容。

1 个答案:

答案 0 :(得分:0)

@每个人。 感谢您的提示。

最后,我的代码几乎可以在以下配置下工作。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$linkCheck);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,$fetchTimeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $fetchTimeout);

顺便说一句,我还有另一个问题。 如果网址中包含诸如重音符号(/clasificación)之类的奇数字符,则它不会出现致命错误。

当我使用/ clasificaci%C3%B3n而不是上面的名称时,它将再次起作用。 所以,这是我的问题。 如何更改奇数字符串,以便将其设置为有效的网址。

非常感谢。