如果一台已获授权的 Android 设备已经在 8080 端口运行可通过 adb 访问的 HTTP 代理,就把笔记本电脑上的一个端口转发到它:

adb -s DEVICE_SERIAL forward tcp:6400 tcp:8080

使用设备的真实序列号,然后把笔记本浏览器的 HTTP 代理设为 127.0.0.1:6400。第一个端口是笔记本侧的端点,第二个是手机上的服务。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 服务器,就转发该端口并在笔记本上建立 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。关闭浏览器并不会移除转发状态。

相关文章