5

这真让我抓狂。

我想在 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。

4

1 回答 1

4

让它工作

以这种方式工作,使用 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()))
于 2011-04-06T10:30:21.183 回答