代理验证需要具有cURL [英] Proxy Authentication Required with cURL

查看:129
本文介绍了代理验证需要具有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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆