# 行動代理服務

行動代理服務，聽起來可能不太容易理解。我們先用一句話來描述，就是 FIRERPA 內建一個 HTTP 代理伺服器，您可以透過這個 HTTP 網路代理，也就是透過手機的網路連線到外部網路來存取其他網站。

例如，有時候您想在與裝置相同的網路 IP 下進行一些網路測試工作來排查問題。FIRERPA 的這個代理功能，支援您將執行 FIRERPA 的裝置作為 HTTP 網路代理伺服器，也就是說，您可以透過此功能將此行動裝置作為代理伺服器，讓通訊流量通過此裝置的網路出口。或者，當您在擷取封包，但不希望流量從本機電腦出去時，那麼您可以設定此代理服務為 mitmproxy 的上游代理，這樣，您就可以擷取到封包，並且所有通訊流量仍然透過原本的裝置發出。又或者，將大量裝置的閒置網路用作 IP 代理服務等。

## 使用代理

您可以在 Firefox 瀏覽器的設定中手動設定代理，將 `192.168.0.2` 連接埠 `65000` 設定為代理，並勾選 `也將此代理用於 HTTPS`，這樣您的 Firefox 將會與裝置有著相同的對外 IP。

您也可以透過以下 curl 指令快速體驗

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

您也可以透過 Python requests 使用

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


預設情況下，這個代理無需任何認證，但是當您使用 `--certificate` 啟動時（使用了服務憑證），那麼登入使用者名稱為 lamda，密碼與遠端桌面登入權杖（注意不是遠端桌面的自訂密碼，而是服務憑證檔案中的密碼）相同，您也可以使用 properties.local 自訂設定 `tunnel2.password` 來自行設定此密碼。

對於上述使用服務憑證的情況，請透過以下方式使用

```bash
curl -x http://lamda:憑證密碼@192.168.0.2:65000 https://httpbin.org/ip
```

同樣地，Python requests 也是如下形式

```python
requests.get("https://httpbin.org/ip", proxies={"http":"http://lamda:憑證密碼@192.168.0.2:65000", "https": "http://lamda:憑證密碼@192.168.0.2:65000"})
```


## 設定代理

您可以透過在 properties.local 中寫入以下設定來對行動代理功能進行設定，您可以設定其密碼驗證，或使其透過 rmnet（4G/5G 行動網路）介面發出，而不是預設的對外網路介面。

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

對外介面 iface 設定用來設定行動代理的出口網路，它存在兩個可設定的值，即 wlan、rmnet。當 iface 值為 wlan 時，將自動偵測可用的 wlan 介面並選擇任意一個發出請求，
而當 iface 為 rmnet 時，將嘗試啟用行動數據（4/5G，即使 WIFI 已開啟），並嘗試將請求從行動網路介面發出。當設定為 rmnet/wlan 但其介面無網路時，代理將會失效。
未對此項進行設定時，則使用預設網路發出請求。

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