代理验证需要具有cURL [英] Proxy Authentication Required with cURL
本文介绍了代理验证需要具有cURL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
HTTP / 1.1 407 Proxy Authentication Required
错误... 这是我使用的PHP代码:
$ proxy_user ='Michiel ';
$ proxy_pass ='mypassword';
$ proxy_url ='myproxyurl:port';
$ proxy = true;
$ service_url =https://www.myapiurltocall.com;
$ service_user ='user:password:FO';
$ service_pass ='password';
$ ch = curl_init($ service_url);
//必要时设置代理
if($ proxy){
curl_setopt($ ch,CURLOPT_PROXY,$ proxy_url);
curl_setopt($ ch,CURLOPT_PROXYUSERPWD,$ proxy_user。':'。$ proxy_pass);
curl_setopt($ ch,CURLOPT_PROXYPORT,8080);
curl_setopt($ ch,CURLOPT_PROXYAUTH,CURLAUTH_NTLM);
}
//设置服务认证
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ ch,CURLOPT_USERPWD,{$ service_user}:{$ service_pass});
// HTTP标头
$ headers ['Authorization'] ='基本'。 base64_encode($ proxy_user:$ proxy_pass);
curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers);
curl_setopt($ ch,CURLOPT_VERBOSE,1);
curl_setopt($ ch,CURLOPT_HEADER,TRUE);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ ch,CURLOPT_ENCODING,'');
curl_setopt($ ch,CURLOPT_TIMEOUT,15);
//警告:这将防止curl检测到中间人攻击
curl_setopt($ ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0);
$ data = curl_exec($ ch);
我不知道我做错了...我该如何解决这个错误?
解决方案
这是我最常用的:
function curlFile($ url,$ proxy_ip,$ proxy_port,$ loginpassw)
{
// $ loginpassw ='username:password';
// $ proxy_ip ='192.168.1.1';
// $ proxy_port ='12345';
// $ url ='http://www.domain.com';
$ ch = curl_init();
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_HEADER,0);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_PROXYPORT,$ proxy_port);
curl_setopt($ ch,CURLOPT_PROXYTYPE,'HTTP');
curl_setopt($ ch,CURLOPT_PROXY,$ proxy_ip);
curl_setopt($ ch,CURLOPT_PROXYUSERPWD,$ loginpassw);
$ data = curl_exec($ ch);
curl_close($ ch);
return $ data;
}
I would like to use a cURL function, but I'm behind a proxy, so I get an HTTP/1.1 407 Proxy Authentication Required
error...
This is the php code I use:
$proxy_user = 'Michiel';
$proxy_pass = 'mypassword';
$proxy_url = 'myproxyurl:port';
$proxy = true;
$service_url = "https://www.myapiurltocall.com";
$service_user = 'user:password:FO';
$service_pass = 'password';
$ch = curl_init($service_url);
// Set proxy if necessary
if ($proxy) {
curl_setopt($ch, CURLOPT_PROXY, $proxy_url);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_user.':'.$proxy_pass);
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
}
// Set service authentication
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, "{$service_user}:{$service_pass}");
// HTTP headers
$headers['Authorization'] = 'Basic ' . base64_encode("$proxy_user:$proxy_pass");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
//WARNING: this would prevent curl from detecting a 'man in the middle' attack
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
And I don't know what I do wrong... How can I get around this error?
解决方案
This is what I'm mostly using :
function curlFile($url,$proxy_ip,$proxy_port,$loginpassw)
{
//$loginpassw = 'username:password';
//$proxy_ip = '192.168.1.1';
//$proxy_port = '12345';
//$url = 'http://www.domain.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
这篇关于代理验证需要具有cURL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文