服务器之家

专注于服务器技术!
当前位置:首页 > 脚本编程 > Python

python urllib2 代理与NTLM验证

发布时间:2014-08-03 来源:服务器之家

查了许久用urllib2通过代理访问网络的贴子,也写了测试代码,但是一直failed.Error Code: 407 Proxy Authentication Required. The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied. (12209)

最后打算放弃用变通的方法现实现.
用curl库,网上找了下有对应python的接口----(pycurl)
马上down下,安装测试

测试code:

#coding=utf-8
import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://www.ifeng.com')
import StringIO
b = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.setopt(pycurl.PROXY, 'http://10.10.10.10:8080')
c.setopt(pycurl.PROXYUSERPWD, 'username:password')
c.perform()
print b.getvalue()

得到的结果还是:Error Code: 407 Proxy Authentication Required.

突然想起公司的OA都要加入域用代理才能上网。

又google下,搜到以下东东:
NTLM 身份验证
在网络环境中,NTLM (NT LAN Manager)用作身份验证协议以处理两台计算机(其中至少有一台计算机运行 Windows NT 4.0 或更早版本)之间的事务。具有此配置的网络称为“混合模式”,这是 Windows Server 2003 家族中的默认设置。
例如,以下配置将使用 NTLM 作为身份验证机制:
Windows 2000 或 Windows XP Professional 客户端向 Windows NT 4.0 的域控制器验证身份。

Windows NT 4.0 Workstation 客户端向 Windows 2000 或 Windows Server 2003 域控制器验证身份。

Windows NT 4.0 Workstation 客户端向 Windows NT 4.0 域控制器验证身份。

Windows NT 4.0 域中的用户向 Windows 2000 或运行 Windows Server 2003 家族的域验证身份。

运行向任何域控制器验证身份的 Windows 95、Windows 98 或 Windows Millennium Edition 的客户端。

另外,NTLM 是为没有加入到域中的计算机(如独立服务器和工作组)提供的身份验证协议。

分析后加上:c.setopt(pycurl.PROXYAUTH, pycurl.HTTPAUTH_NTLM)。功能OK。真是曲折啊。
不过还有其它好多认证方式,以后用代理不行,可以换个方向用其它认证试试。

 

相关文章

推荐阅读

热点推荐

    SQL Error: select * from ***_***_news where id in ()