SOCKS の依存関係不足は、ローカルの Python インストールの問題です。Requests と HTTPX は異なる任意パッケージを使うため、スクリプトがインポートするクライアント用の追加機能をインストールします。

Requests

uv add 'requests[socks]'
uv run python -c 'import requests, socks; print(requests.__version__)'

Requests は PySocks を使います。依存関係のインストール後、socks5h:// のプロキシ URL は宛先 DNS の解決を SOCKS プロキシに委ねます。接続先自体が SOCKS サービスを提供している必要があります。

HTTPX

uv add 'httpx[socks]'
uv run python -c 'import httpx, socksio; print(httpx.__version__)'

HTTPX は socksio を使います。requests[socks] をインストールしても HTTPX の追加機能は入りません。

すでにインストール済みの場合

端末、IDE、Notebook カーネル、スケジュールされたジョブが、それぞれ別の Python 環境を使う場合があります。失敗するスクリプトを実行しているインタープリターを確認します。

uv run python -c 'import sys; print(sys.executable)'

同じ環境でインポートを確認します。成功したら時間制限付きでリクエストを再試行します。その後の認証、接続、SOCKS 応答のエラーは接続自体に関する問題です。次のテストに公開接続先が必要ならSOCKS5 プロキシ一覧を参照し、クライアントを一致する SOCKS モードに保ちます。

関連記事