我想为我的Qt WebEngine应用设置socks5代理。我使用 PyQt5.8,QT5.8 。
我通过 danted v1.4.1 设置了socks5服务器。我测试了我的socks5服务器,它运行良好。但是当我在我的应用中使用它时, danted 日志错误:
在0秒内读取3个字节后出现错误:客户端没有提供可接受的身份验证方法
这是我的代码:
def set_proxy():
from PyQt5.QtNetwork import QNetworkProxy
proxy = QNetworkProxy()
from six.moves.urllib import parse as urlparse
string_proxy = "socks5://username:password@ip:port"
urlinfo = urlparse.urlparse(string_proxy)
proxy = QNetworkProxy()
if urlinfo.scheme == 'socks5':
proxy.setType(QNetworkProxy.Socks5Proxy)
else:
proxy.setType(QNetworkProxy.NoProxy)
if urlinfo.hostname != None:
proxy.setHostName(urlinfo.hostname)
if urlinfo.port != None:
proxy.setPort(urlinfo.port)
if urlinfo.username != None:
proxy.setUser(urlinfo.username)
else:
proxy.setUser('')
if urlinfo.password != None:
proxy.setPassword(urlinfo.password)
else:
proxy.setPassword('')
QNetworkProxy.setApplicationProxy(proxy)
任何人都可以帮助我吗?
添加 proxyAuthenticationRequired 信号
def set_proxy(string_proxy):
proxy = QNetworkProxy()
urlinfo = urlparse.urlparse(string_proxy)
if urlinfo.scheme == 'socks5':
proxy.setType(QNetworkProxy.Socks5Proxy)
elif urlinfo.scheme == 'http':
proxy.setType(QNetworkProxy.HttpProxy)
else:
proxy.setType(QNetworkProxy.NoProxy)
proxy.setHostName(urlinfo.hostname)
proxy.setPort(urlinfo.port)
proxy.setUser(urlinfo.username)
proxy.setPassword(urlinfo.password)
QNetworkProxy.setApplicationProxy(proxy)
def handleProxyAuthReq(url, auth, proxyhost):
auth.setUser(username)
auth.setPassword(password)
webView = QtWebEngineWidgets.QWebEngineView()
#proxy_string = "http://username:password@ip:port"
proxy_string = "socks5://username:password@ip:port"
set_proxy(proxy_string)
webView.page().proxyAuthenticationRequired.connect(handleProxyAuthReq)
我通过 Http代理进行测试,并且措辞得当。但是当我使用 Socks5代理时,无法发出 proxyAuthenticationRequired 信号。
答案 0 :(得分:0)
QtWebEngine does not handle来自QNetworkProxy的用户名/密码信息:
忽略所有其他代理设置,例如QNetworkProxy :: rawHeader(),QNetworkProxy :: user()或QNetworkProxy :: password()。
您需要处理proxyAuthenticationRequired并在那里处理身份验证。
2017/03/30更新
使用SOCKS代理看起来像Chromium does not support身份验证。