Jupyter の IFrame はブラウザのネットワーク経路を使う
リモート Jupyter カーネルでのダウンロードとブラウザに埋め込まれたナビゲーションを区別し、ブラウザがリモート出口を必要とする場合は許可された SOCKS 経路を使います。
IPython.display.IFrame でウェブサイトを埋め込むと HTML の iframe が作成されます。ノートブックを表示しているブラウザは、その後ブラウザ自身の経路でその URL へ移動します。
リモートカーネルでの Requests 呼び出しは別の操作です。その HTTP クライアントはカーネルが動作する場所で実行されます。カーネルでプロキシ変数を設定しても、ブラウザの iframe リクエストは構成されません。
ブラウザが許可されたリモートマシンを出口として使う必要がある場合、既存の SSH アカウントでローカル SOCKS リスナーを用意できます。
ssh -N -D 127.0.0.1:1080 [email protected]
次に、対象のブラウザ通信が 127.0.0.1:1080 の SOCKS5 を使うように設定します。必要ならリモート宛先の DNS も含めます。SSH セッションは実行したままにします。SSH は自身のリモート側から宛先への接続を開きます。このホストに意図した経路があることを確認してください。特にノートブックのカーネルが別のコンテナやマシンで動作している場合は重要です。
ノートブックサーバー自身の URL にはブラウザの直接例外が必要な場合があります。新しい経路でノートブックへのアクセスが壊れないようにするためです。ウェブサイトの iframe 制限も引き続き有効です。ネットワークの出口を変えても、フレーミングを拒否するページを埋め込む許可は得られません。