本文にスキップ

Python での接続 ​

割り当て済みの静的エンドポイントから通信します。環境変数で認証情報を読み込み、既定では HTTP プロキシサーバー経由で HTTPS にアクセスします。IP の取得や切り替え処理は含みません。

接続前の準備 ​

実行するターミナル・コンテナー・配備先で PROXY_HOST、PROXY_PORT、PROXY_USERNAME、PROXY_PASSWORD を設定します。管理画面の現在の情報と対応ポートを使い、実際のパスワードをリポジトリー、ログ、フロントエンドへ含めないでください。

実行環境と依存関係 ​

Python 3 と SOCKS 対応の requests を使い、proxy_example.py に保存します。

sh
python -m pip install "requests[socks]"
python proxy_example.py

設定手順 ​

python
import os
from urllib.parse import quote
import requests

host = os.environ["PROXY_HOST"].strip("[]")
port = int(os.environ["PROXY_PORT"])
user = quote(os.environ["PROXY_USERNAME"], safe="")
password = quote(os.environ["PROXY_PASSWORD"], safe="")
scheme = os.environ.get("PROXY_SCHEME", "http")
if scheme not in {"http", "socks5h"}:
    raise ValueError("PROXY_SCHEME must be http or socks5h")
host = f"[{host}]" if ":" in host else host
proxy_url = f"{scheme}://{user}:{password}@{host}:{port}"

try:
    with requests.Session() as session:
        session.trust_env = False
        session.proxies = {"http": proxy_url, "https": proxy_url}
        response = session.get("https://ip123.in/ip.json", timeout=(10, 30))
        response.raise_for_status()
        print(response.json())
except requests.RequestException as error:
    raise SystemExit(f"Proxy request failed: {type(error).__name__}") from None

PROXY_SCHEME の既定は http です。SOCKS5 では socks5h と対応ポートを指定し、接続先の名前をリモートで解決します。プロトコル変更による静的出口の切り替えはありません。

うまく接続できない場合 ​

例だけ成功する場合は、実際の通信プロセス、SDK の設定、タイムアウト、再試行を確認します。TLS 証明書の検証は有効なままにしてください。例は認証情報を含むエラーを出力しません。調査ログも伏せ字にします。よくある質問を参照してください。