使用PyQt4连接socks5代理
我正在尝试使用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 个回答
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)、端口、用户名和密码都必须是正确的)。如果你还是无法使用,那问题可能出在别的地方,请通过编辑你的问题来说明一下情况。