# 设备 HTTP 代理

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

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

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

## 使用代理

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

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

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

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

```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 自定义密码）；也可在 [服务配置](./properties.md) 中设置 `tunnel2.password` 单独指定代理密码。此时 curl 示例为：

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

Python 示例为：

```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"})
```

## 配置代理

可在 [服务配置](./properties.md) 中调整桥接代理。例如设置 `tunnel2.login` 与 `tunnel2.password` 自定义登录凭据：

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

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

```ini
tunnel2.iface=rmnet
```
