1

我想通过代理在网络中的 php 中通过 curl 打开网页。但不幸的是,TMG 服务器无法对我进行身份验证并返回 407 错误。这是我的代码:

$ch = curl_init("http://google.com");;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, "http://192.168.4.10:8080");
curl_setopt($ch, CURLOPT_PROXYPORT,8080);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, "8909103:uvixqr");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');
//curl_setopt($ch, CURLOPT_HEADER, 1);
$x = curl_exec($ch);
var_dump($x);
curl_close($ch);

并返回以下错误:

网络访问消息:页面无法显示
说明:您尝试访问的页面有问题,无法显示。

尝试以下操作:
刷新页面:单击刷新按钮再次搜索页面。超时可能是由于 Internet 拥塞而发生的。
检查拼写:检查您输入的网页地址是否正确。地址可能打错了。
从链接访问:如果有指向您要查找的页面的链接,请尝试从该链接访问该页面。
如果您仍然无法查看请求的页面,请尝试联系您的管理员或帮助台。

技术信息(支持人员)
错误代码:407 需要代理身份验证。Forefront TMG 需要授权才能完成请求。拒绝访问 Web 代理过滤器。(12209)
IP地址:192.168.4.10
日期:2012 年 5 月 20 日上午 6:51:36 [格林威治标准时间]
服务器:ISA3.ee.kntu.local
来源:代理

问题出在哪里,我应该如何解决?

4

2 回答 2

3

curl TMG (ISA3) 认证:

url_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);

curl_setopt($ch, CURLOPT_PROXY, "http://proxyserver:8080");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, "yourdomain.com\username:password");

有用 ;)

于 2012-05-20T07:12:51.007 回答
0

您正在设置代理端口两次:

curl_setopt($ch, CURLOPT_PROXY, "http://192.168.4.10:8080");
curl_setopt($ch, CURLOPT_PROXYPORT, 8080);

去掉 CURLOPT_PROXY 设置中的 :8080 ,并将 CURLOPT_PROXYPORT 值放在引号中:

curl_setopt($ch, CURLOPT_PROXY, "http://192.168.4.10");
curl_setopt($ch, CURLOPT_PROXYPORT,"8080");

将其设置为详细模式也很有帮助:

curl_setopt($ch, CURLOPT_VERBOSE, 1);
于 2012-05-20T07:08:56.960 回答