set_proxy は、PySocks ソケットが接続を確立するときに使うプロキシ設定を保存します。稼働中のストリームをある中間者から別の中間者へ移行するものではありません。

接続が開いてしまえば、そのバイト列は確立済みの経路に属します。保存されたプロキシ設定を消去しても、接続を宛先へ直接移す要求にはならず、アドレスを変えても新しい出口へ移ることはありません。

別の経路を使うには、新しいソケットを作り、意図的に設定し、宛先への新しい接続を確立します。古いソケットはアプリケーションの通常のライフサイクルで閉じてください。

ソケットごとの設定は、グローバルな既定値や socket モジュールの monkey-patching とは分けて保ちます。グローバルな変更は他のコードの後続ソケットに影響し得ますが、既存のソケットがすでに何をしているかは説明しません。

アプリケーションのプロトコルが連続したセッションを必要とするなら、再接続にはそのプロトコルの復旧ロジックも必要です。新しい TCP 経路と別の公開 IP は、アプリケーションのトランザクション状態や認証済み状態を自動的に保つものではありません。

関連記事