Jon*_*röm 5 http-proxy websocket python-3.x python-asyncio
我正在使用websockets模块,但它不支持通过我的公司代理进行客户端连接:
>>> import asyncio, websockets
>>> async def connect(uri):
... async with websockets.connect(uri) as websocket:
... pass
...
>>> asyncio.get_event_loop().run_until_complete(connect('ws://myhost.com/path/'))
....
ConnectionRefusedError: [Errno 10061] Connect call failed ('myhost.com', 80)
Run Code Online (Sandbox Code Playgroud)
但是,如果将curl 与我的http_proxy环境变量集一起使用,它会起作用:
$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" -H "Sec-WebSocket-Key: MTIzNDEyMzQxMjM0MTIzNA==" http://myhost.com/path/
HTTP/1.1 101 Switching Protocols
Server: nginx/1.13.6
Date: Fri, 10 Nov 2017 14:51:00 GMT
Upgrade: websocket
Sec-WebSocket-Accept: s+CT5bkW5F3N2/5JUXrCPtLHn68=
Connection: Upgrade
Run Code Online (Sandbox Code Playgroud)
我最好的选择是什么?用于建立客户端 websocket 连接的其他模块?
使用pip install websocket-client。然后像平常一样放置http*_proxy变量。os.environ代码如下:
ws = websocket.create_connection('ws://example.com/path')
ws.send(out_data)
in_data = ws.recv()
Run Code Online (Sandbox Code Playgroud)
如果您不确切知道代理使用什么协议,请设置两个http*_proxy变量,如下例所示:
$ export http_proxy=http://jonasb:password@proxyserver:8000
$ export https_proxy=https://jonasb:password@proxyserver:8000
Run Code Online (Sandbox Code Playgroud)
(假设您的用户名是 jonasb,端口是 8000)。
| 归档时间: |
|
| 查看次数: |
16192 次 |
| 最近记录: |