# 設備 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
```