Python机制 - set_proxies方法忽略代理并且什么都不做

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

我正在尝试在创建机械化broswer实例时设置一个http代理,但它似乎根本没有工作或抛出任何类型的错误。

from mechanize import Browser
br = Browser()
ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/1    8.0 (compatible;)'
br.addheaders = [('User-Agent', ua), ('Accept', '*/*')]
br.set_proxies({'http':'116.226.11.254:8118'})
br.open("https://xxx.xxx")

此代码仍然使用本地IP打开URL,并且根本不使用代理。如果代理无法访问,那么它应该抛出这样的错误,但它没有发生。我试图为代理服务器输入一些无效的ip

br.set_proxies({'http':'116.22as6.11.25as4:8118'})

但是这段代码也没有抛出任何错误!!是否有可能其他一些inbuild python代码重写代理?我在具有最新机制的虚拟环境中使用python 2.7.10,并尝试使用此代码打开https地址

我试过this但它仍然忽略了代理

python proxy mechanize
2个回答
0
投票

请注意,您只是为'http'协议设置代理,但在br.open中调用'https'。

尝试将协议替换为br.set_proxies中的“https”。


0
投票

经过几个小时的研究,我意识到机械化的这个功能是无用的,所以我找到了另一种方法来使机械化请求工作:

#!/usr/bin/python
import mechanize
import socks
import socket

# This will be printing your real ip
print mechanize.Browser().open("https://api.ipify.org/?format=raw").read()
ip = "0.0.0.0"
port = 1234
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, ip, port)
socket.socket = socks.socksocket

br = mechanize.Browser()
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.addheaders = [("User-agent", "Mozilla/5.0")]
# Then with your proxy:
print br.open("https://api.ipify.org/?format=raw").read()
# Will be printing the ip from the proxy

然后这真的适合我。我希望这对你有用!

© www.soinside.com 2019 - 2024. All rights reserved.