设备 HTTP 代理

FIRERPA 在手机上提供 HTTP 代理(服务配置里的桥接代理,即 tunnel2.*)。您把电脑或浏览器里的代理服务器指向手机后,电脑访问网站时会先经过手机,再从手机的网络出去,对外显示的 IP 与手机一致。它与 设置代理 是相反方向的两件事,对比如下:

设备 HTTP 代理(本章)设置代理
网络走向电脑 → 经 手机 上网手机上的 App → 经 外部代理 上网
典型用途让电脑用上手机的 IP给手机挂代理 IP

常见用途包括让电脑与手机共用同一出口 IP 做联调排查、在抓包时把 mitmproxy 的上游指向手机以便流量仍从设备发出,或利用多台设备的网络作为 IP 来源。

使用代理

该功能默认开启,代理与远程桌面共用服务端口,默认为 65000;请在手机 WLAN 设置中查看当前 IP(下文示例为 192.168.0.2),若修改过 port 请注意替换示例中的端口。电脑需能访问手机的 FIRERPA 服务端口,通常要求与手机在同一局域网或者将服务端口转发至公网。

在电脑上可用以下命令快速验证(将 IP 换为您的设备地址):

curl -x http://192.168.0.2:65000 https://httpbin.org/ip

返回的 IP 与手机对外 IP 一致即表示正常。在 Firefox 中可将 HTTP 代理设为 192.168.0.2、端口 65000,并勾选「也将此代理用于 HTTPS」。Python 中可写:

requests.get("https://httpbin.org/ip", proxies={"http": "http://192.168.0.2:65000", "https": "http://192.168.0.2:65000"})

未启用服务证书时,代理默认无需认证。若启动时使用了服务证书,则需要使用用户名 lamda,密码为服务证书 PEM 文件第一行的 PASSWD(与 HTTPS 远程桌面登录密码相同,但不是 WebUI 自定义密码);也可在 服务配置 中设置 tunnel2.password 单独指定代理密码。此时 curl 示例为:

curl --proxy-insecure -x https://lamda:证书密码@192.168.0.2:65000 https://httpbin.org/ip

Python 示例为:

requests.get("https://httpbin.org/ip", verify=False, proxies={"http": "https://lamda:证书密码@192.168.0.2:65000", "https": "https://lamda:证书密码@192.168.0.2:65000"})

配置代理

可在 服务配置 中调整桥接代理。例如设置 tunnel2.logintunnel2.password 自定义登录凭据:

tunnel2.login=lamda
tunnel2.password=您的新密码

tunnel2.iface 用于指定出口网卡:wlan 表示走 Wi-Fi,rmnet 表示走移动数据(4G/5G,即使 Wi-Fi 已连接也会优先用流量)。不配置时使用系统默认网络;若所选网卡当前无网络,代理将不可用。

tunnel2.iface=rmnet