websocket._exceptions.WebSocketProxyException:通过代理状态失败CONNECT:503

sha*_*eed 11 python http-proxy websocket python-3.x qliksense

提供的答案需要有关qlik服务器身份验证的更多详细信息

我正在尝试qlik通过WebSockets 连接到使用证书.

错误:

websocket._exceptions.WebSocketProxyException: failed CONNECT via proxy status: 503
Run Code Online (Sandbox Code Playgroud)

码:

from websocket import create_connection  
import ssl  


senseHost = "dummy.xyz.com"  
privateKeyPath = "C:\\ProgramData\\Qlik\\Sense\\Repository\\Exported Certificates\\"  


## userDirectory and userId can be found at QMC -> Users  
userDirectory, userId = "DIRECTORY_OF_SERVER","QlikServerUserId"  


url = "wss://" + senseHost + ":4747/app/"  # valid  
certs = ({"ca_certs": privateKeyPath + "root.pem",  
            "certfile": privateKeyPath + "client.pem",  
            "keyfile": privateKeyPath + "client_key.pem",  
            "cert_reqs":ssl.CERT_REQUIRED,  
            "server_side": False  
            })  
ssl.match_hostname = lambda cert, hostname: True  
ws = create_connection(url, sslopt=certs,
                       http_proxy_host="xyz.corp.company.com",
                       http_proxy_port="80",
                       http_no_proxy="*.corp.company.com;*.abc.com;*.pqr.com;"
                       header={'X-Qlik-User: UserDirectory=%s; UserId=%s'% (userDirectory, userId)})  
session = self.ws.recv()
Run Code Online (Sandbox Code Playgroud)

*注意:

  • 我的网络有代理.
  • 我在每个领域都使用了正确的值 sensehost, userDirectory, userId

请帮助或任何建议可以欣赏连接qlik.

最终目标:动态地将Qlik KPI值/图表变为django开发的前端!

sha*_*eed 1

部分答案:

根据 Qlik .net SDK文档,他们说Port: With proxy (443), without proxy (4747) or without security (80).

所以,我url = "wss://" + senseHost + ":4747/app/"改为url = "wss://" + senseHost + ":443/app/"

待办的:

无法使用证书登录。我想使用 NTLM 身份验证。如何在 python 中将 NTLM 身份验证传递给 websocket 链接。

如果您有可以解决这两个问题的解决方案,请编辑或编写新答案。