Qt Web引擎集socks5代理

Qt Web引擎集socks5代理,qt,pyqt,socks,qtwebengine,Qt,Pyqt,Socks,Qtwebengine,我想为我的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 = QNetworkP

我想为我的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)
有人能帮我吗


2017/03/29更新 添加所需代理身份验证信号

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 proxy时,无法发出proxyAuthenticationRequired信号。

QtWebEngine来自QNetworkProxy的用户名/密码信息:

将忽略所有其他代理设置,例如QNetworkProxy::rawHeader()、QNetworkProxy::user()或QNetworkProxy::password()

您需要在那里处理身份验证


2017/03/30更新


看起来像是使用SOCKS代理进行身份验证。

我已将其添加到我的代码中。我用我的Http代理对它进行了测试,并对它进行了措辞。但是当我使用Socks5代理时,proxyAuthenticationRequired信号无法发出。看起来像。