Python websocket-client: SOCKS5プロキシ経由で接続する
文書化されたSOCKSプロキシ種別でwebsocket-clientを設定し、wss接続のTLS層はライブラリに任せます。
from websocket import create_connection
ws = create_connection(
"wss://service.example.net/socket",
http_proxy_host="127.0.0.1",
http_proxy_port=1080,
proxy_type="socks5h",
timeout=15,
)
これをwebsocket-clientと、すでに利用可能な文書化済みのSOCKS依存関係とともに使います。許可された公開プロキシ経路で公開WSSサービスを利用する場合、SOCKS5プロキシ一覧がプロキシのホストとポートの候補を提供します。ホスト/ポートのキーはhttp_proxy_*という名前ですが、proxy_type='socks5h'はプロキシ側の宛先名処理を伴うSOCKS5を選択します。
順序は、宛先ストリームを得るためのプロキシ交渉、WSS用の検証済みTLS、そしてWebSocketハンドシェイクです。プロキシのホスト名はウェブサイトのTLS識別子ではありません。検証を無効にしても、誤った位置にあるTLS段階は修復されません。
認証付きプロキシでは、インストール済みバージョンがそのプロキシ種別向けに文書化している引数を使ってください。アプリケーションのWebSocketヘッダーは、以前の中間者を認証しません。
手動で用意したソケットは、それらの層の責任を統合側に移します。適切な場合はライブラリのインターフェースを優先し、websocket-clientは別々にバージョン管理されるwebsocketsパッケージとは分けておいてください。