机械师似乎忽略了代理?

问题描述 投票:2回答:2

我正在使用http代理和Mechanize模块。我初始化mechanize对象并像这样设置代理:

self.br = mechanize.Browser()
self.br.set_proxies({"http": proxyAddress})   #proxy address is like 1.1.1.1:8080

然后我这样打开网站:

response = self.br.open("http://google.com")

我的问题是机械化似乎完全忽略了代理。如果我调试并检查br对象,在代理处理程序下我可以看到我的代理设置。然而,即使我给出了一个糟糕的代理,机械化只是为了我的业务,​​就像我从未设置代理。是什么赋予了?

编辑:我也尝试过:

mechanize.install_opener(mechanize.build_opener(mechanize.ProxyHandler({'http': "127.0.0.1:99"})))
response = mechanize.urlopen("http://google.com")

它似乎也忽略了我的代理。 (我甚至没有给它一个有效的代理,它不应该在URLError上失败吗?)

python proxy urllib2 mechanize mechanize-python
2个回答
1
投票

在电子邮件列表上交谈后想出来:

import mechanize
browser = mechanize.Browser()
browser.set_proxies(proxies={"http": "myproxy.example.com:1234"},
                proxy_bypass=lambda hostname: False)

0
投票

如果您尝试访问https站点,请将代理设置为https,如下所示br = mechanize.Browser()

    # Cookie Jar
    cj = cookielib.LWPCookieJar()
    br.set_cookiejar(cj)

    # Browser options
    br.set_handle_equiv(True)
    br.set_handle_gzip(True)
    br.set_handle_redirect(True)
    br.set_handle_referer(True)
    br.set_handle_robots(False)

    # Follows refresh 0 but not hangs on refresh > 0
    br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

    # Want debugging messages?
    #br.set_debug_http(True)
    #br.set_debug_redirects(True)
    #br.set_debug_responses(True)

    # User-Agent (this is cheating, ok?)
    br.addheaders = [('User-agent', 'Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 5.2; Trident/6.0)')]

    br.set_proxies({"https": "XXX.XX.246.56:33835"})
© www.soinside.com 2019 - 2024. All rights reserved.