PyQt:如何使用带有匿名代理的网页
Posted
技术标签:
【中文标题】PyQt:如何使用带有匿名代理的网页【英文标题】:PyQt: how to use QWebPage with an anonimous proxy 【发布时间】:2011-03-24 17:21:28 【问题描述】:这快把我逼疯了。
我想在 QWebPage 中显示一个 url,但我想通过匿名代理传递它。
代码
#setting up the proxy
proxy = QNetworkProxy()
proxy.setHostName("189.75.98.199") #just examples
proxy.setPort(1111)
proxy.setType = QNetworkProxy.HttpProxy
#setting the manager
manager = QNetworkAccessManager()
manager.setProxy(proxy) #setting the proxy on the manager
#setting the proxy as application proxy
QNetworkProxy.setApplicationProxy(proxy) #seems to do nothing..
#web page
webpage = QWebPage()
webpage.setNetworkAccessManager(manager) #maybe.. but it doesn't work
webpage.mainFrame().load(QUrl("http://www.foo.bar") )
我调用了一个测试页面,它告诉我标题(在 php 服务器上,所以我查看 $_SERVER),并且 remote_addr 始终是我的 ip,而不是代理 ip。
怎么了?
你能帮帮我吗?我正在使用 PyQt 4.8.3。
【问题讨论】:
【参考方案1】:让它工作
以这种方式工作,使用 setApplicationProxy。我仍然不明白为什么在创建实例后设置代理参数不起作用(如初始示例)
def set_proxy(self, proxy):
proxy_url = QUrl(proxy)
if unicode(proxy_url.scheme()).startswith('http'):
protocol = QNetworkProxy.HttpProxy
else:
protocol = QNetworkProxy.Socks5Proxy
QNetworkProxy.setApplicationProxy(
QNetworkProxy(
protocol,
proxy_url.host(),
proxy_url.port(),
proxy_url.userName(),
proxy_url.password()))
【讨论】:
以及如何取消设置代理或仅保留支持代理和不支持代理的请求处理程序? 您需要使用 QNetworkProxy.NoProxy 类型来代替 HttpProxy 或 Socks5Proxy以上是关于PyQt:如何使用带有匿名代理的网页的主要内容,如果未能解决你的问题,请参考以下文章