我在连接网络代理时遇到很多麻烦。我已经尝试了几种设置,但是没有一个起作用。即使我已经通过身份验证,最接近的方法也返回了“ HTTP / 1.1 407要求代理身份验证[Proxy-Authenticate]”错误。
这是我正在使用的代码:
<?php
// Edit the four values below
$PROXY_HOST = "proxy.det.nsw.edu.au"; // Proxy server address
$PROXY_PORT = "8080"; // Proxy server port
$PROXY_USER = "USERNAME"; // Username
$PROXY_PASS = "PASSWORD"; // Password
// Username and Password are required only if your proxy server needs basic authentication
$auth = base64_encode("$PROXY_USER:$PROXY_PASS");
stream_context_set_default(
array(
'http' => array(
'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT",
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth"
// Remove the 'header' option if proxy authentication is not required
)
)
);
$targetURL = "http://stackoverflow.com/questions/17111112/using-get-headers-with-a-proxy";
print_r(get_headers($targetURL, 1));
echo ("<br><br>");
$result = file_get_contents($targetURL);
?>
这是代理的回报:
Array([0] =>需要HTTP / 1.1 407代理身份验证 [Proxy-Authenticate] =>数组([0] =>协商[1] => NTLM) [Cache-Control] =>没有缓存[Pragma] =>没有缓存[Content-Type] => text / html; charset = utf-8 [Proxy-Connection] =>关闭[Set-Cookie] => BCSI-CS-47afdfff6410962d = 2;路径= / [连接] =>关闭 [Content-Length] => 653)
警告: file_get_contents(http://stackoverflow.com/questions/17111112/using-get-headers-with-a-proxy): 无法打开流:HTTP请求失败! HTTP / 1.1 407代理 在C:\ inetpub \ wwwroot \ sites \ phpProxyTest.php中需要身份验证 在第36行
如果有帮助,我正在尝试根据代理对用户进行身份验证,以查看他们是否为有效用户,因此,我仅需要代理的是/否响应即可。不幸的是,我无权访问管理员登录名或代理的任何其他部分,因此直接获取用户不是一种选择。任何帮助将不胜感激,请询问您是否需要更多信息。
答案 0 :(得分:0)
HTTP对代理的身份验证由代理的配置决定。
在您的情况下,该代理仅是对NEGOTIATE和NTLM的广告支持,因此发送Basic不会被接受。
您还说您已经“已通过身份验证”,但这不是您的电话。如果您之前已通过代理(例如,使用网络浏览器)进行了身份验证,则它可能会认为您已通过身份验证,或者可能要求对代理的每个连接都进行身份验证。
您将需要使用NTLM或NEGOTIATE才能通过该代理。