我有Fiddler2在0.0.0.0:8888上听。
try:
data = ''
proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'}) //also tried {'http': 'http://127.0.0.1:8888/'}
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
req = urllib2.Request('http://www.google.com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page
except Exception, detail:
print "Err ", detail
我没有在Fiddler看到GET或google的任何请求(但我可以看到其他请求) 有没有办法调试它?似乎python绕过了Fiddler或忽略了代理。
我还将WinHTTP配置为与Fiddler一起使用 -
C:\Windows\system32>netsh winhttp set proxy 127.0.0.1:8888
Current WinHTTP proxy settings:
Proxy Server(s) : 127.0.0.1:8888
Bypass List : (none)
如果请求到SSL地址,是否重要? (Fiddler支持https)
谢谢!
答案 0 :(得分:4)
也许你可以直接使用开启者而不是安装它。在8008打开你的fiddler代理监听器(我正在使用WebScarab,但它们可能是相同的)然后准确地尝试这个代码(也有你不需要的cookie,但让我们试着按原样缩小它以后缩小它):
cj = cookielib.MozillaCookieJar(cookie_filename)
if os.access(cookie_filename, os.F_OK):
cj.load()
proxy_handler = urllib2.ProxyHandler({'https': 'localhost:8008'})
opener = urllib2.build_opener(
proxy_handler,
urllib2.HTTPCookieProcessor(cj)
)
opener.addheaders = [
('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
'Windows NT 5.2; .NET CLR 1.1.4322)'))
]
auth = urllib.urlencode({'email':email,'pass':passw})
data = opener.open('https://login.facebook.com/login.php',data=auth)
所以 - 我做的事情不同:直接使用开启者,将端口更改为8008,添加cookie并使用WebScarab。让我知道其中哪一个为你做了诀窍......
答案 1 :(得分:2)
proxy_bypass_registry
无法正确处理ProxyOverride
注册表值:它将空覆盖视为*,即绕过所有主机的代理。此行为与其他程序(例如Chrome)不匹配。
有许多可能的解决方法:
urllib.proxy_bypass = lambda h: 0
以禁用旁路检查。http_proxy
环境变量中指定代理设置(在这种情况下不会调用proxy_bypass_registry
)。答案 2 :(得分:2)
在Fiddler2中,转到页面工具 - >提琴手选项...... - >连接,从 IE中的值中删除尾随分号应绕过Fiddler for ... 字段并重新启动Fiddler2。
当我使用urllib2代理时,这个解决方案绝对适用于我,但我仍然不明白为什么删除尾随分号可以解决它。
答案 3 :(得分:1)
否则小提琴手无法弄清楚uri。 (你可能会收到504接收失败)。