adbフォワーディングでUSB経由のAndroid端末のプロキシを使う
ノートPCからスマートフォン上のHTTPプロキシへのadbフォワード接続を、ループバックアドレス、モバイル回線の出口、別系統のSSH SOCKS方式も含めて理解します。
許可されたAndroid端末がすでに、adb経由でポート8080に到達できるHTTPプロキシを実行している場合は、ノートPCのポートをそこへ転送します:
adb -s DEVICE_SERIAL forward tcp:6400 tcp:8080
端末の実際のシリアル番号を使い、ノートPCのブラウザのHTTPプロキシを127.0.0.1:6400に設定します。1つ目のポートがノートPC側の端点、2つ目がスマートフォン側のサービスです。adbが提供するのはTCP経路であり、プロキシプロトコルではありません。
laptop browser
-> laptop 127.0.0.1:6400
-> adb USB forwarding
-> phone TCP port 8080
-> phone's outbound network
スマートフォン側のプロキシは、ブラウザのHTTPS向けCONNECTを含む要求された操作をサポートしている必要があります。USBデバッグは許可された端末と信頼できるコンピューターでのみ使用してください。この経路は、通信事業者がスマートフォンへの一方的なインターネット接続を認めることを要求しません。
USBでの到達性とは別に出口を確認してください。プロキシは、そのアプリが別のネットワークを束縛しない限り、スマートフォンが選択した外向きネットワークを使います。有効なWi-Fi、VPN、アプリの明示的なルーティングにより、出口はモバイルデータと異なることがあります。
スマートフォンが代わりにSSHサーバーを実行している場合は、そのポートを転送し、ノートPCでSOCKSを作成します:
adb -s DEVICE_SERIAL forward tcp:2222 tcp:2222
ssh -N -D 127.0.0.1:8899 -p 2222 [email protected]
ここではブラウザが127.0.0.1:8899でSOCKSを使い、SSHがスマートフォン側で宛先接続を開きます。HTTPプロキシを直接転送する代わりの方法であり、どちらの構成も公開リスナーを必要としません。
終了したら、該当するadbのエントリを削除します。たとえばadb -s DEVICE_SERIAL forward --remove tcp:6400です。ブラウザを閉じても転送状態は削除されません。