使用PyQt4连接到socks5代理

时间:2014-03-12 22:33:31

标签: python proxy pyqt pyqt4

我尝试使用PyQt4连接到socks5代理。我可以使用常规代理而不是socks5(需要用户名和密码)使用以下代码执行此操作我收到错误...

TypeError: QNetworkProxy.setPassword(QString): first argument of unbound method must have type 'QNetworkProxy'

代码:

from PyQt4 import QtWebKit
from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4.QtNetwork import *


class Render(QtWebKit.QWebPage):
    def __init__(self, url):
        QNetworkProxy.setPassword('password')
        QNetworkProxy.setUser('user')
        QNetworkProxy.setApplicationProxy(QNetworkProxy(QNetworkProxy.Socks5Proxy, "proxy5.com", 1080))

        self.app = QtGui.QApplication(sys.argv)
        QtWebKit.QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)
        self.mainFrame().load(QtCore.QUrl(url))
        self.app.exec_()

    def _loadFinished(self, result):
        self.frame = self.mainFrame()
        self.app.quit()

有谁知道我做错了什么.. ??

1 个答案:

答案 0 :(得分:1)

QNetworkProxy.setPassword()不是类方法,而是实例方法。因此,创建一个QNetworkProxy实例,然后在其上设置用户/密码:

def __init__(self, url):
    networkProxy = QNetworkProxy(QNetworkProxy.Socks5Proxy, "proxy5.com", 1080)
    networkProxy.setPassword('password')
    networkProxy.setUser('user')
    QNetworkProxy.setApplicationProxy(networkProxy)

(我已经检查了上面的语法是否正确,但很明显socks5主机(proxy5.com),端口,用户和密码必须正确)。如果仍然不适合您,那么问题就在其他地方,请通过编辑您的问题来澄清。