PyQt:如何与匿名代理一起使用QWebPage [英] PyQt: how to use QWebPage with an anonimous proxy

查看:315
本文介绍了PyQt:如何与匿名代理一起使用QWebPage的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这让我发疯了.

我想在QWebPage中显示一个URL,但是我想通过一个匿名代理传递它.

I want to show in a QWebPage an url, but i want to do it passing by an anonimous proxy.

代码

#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.

I call a test page which tells me the headers (on a php server, so i look at $_SERVER), and remote_addr is always my ip, not the proxy ip.

怎么了?

你能帮我吗?我正在使用PyQt 4.8.3.

Can you help me? I'm using PyQt 4.8.3.

推荐答案

让它正常工作

使用setApplicationProxy以这种方式工作.我仍然不明白为什么在实例创建后设置代理参数不起作用(如初始示例中一样)

in this way it works, using setApplicationProxy. I still don't understand why setting proxy parameters after instance creation doesn't work (as in the initial example)

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()))

这篇关于PyQt:如何与匿名代理一起使用QWebPage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆