# บริการพร็อกซี่มือถือ

บริการพร็อกซี่มือถือ (Mobile Proxy Service) อาจฟังดูไม่ค่อยเข้าใจง่ายนัก เราจะอธิบายสั้นๆ ในหนึ่งประโยคคือ FIRERPA มีเซิร์ฟเวอร์พร็อกซี่ HTTP ในตัว ซึ่งคุณสามารถใช้พร็อกซี่เครือข่าย HTTP นี้เพื่อเข้าถึงเว็บไซต์อื่น ๆ ผ่านเครือข่ายของโทรศัพท์มือถือได้

ตัวอย่างเช่น บางครั้งคุณต้องการทำการทดสอบเครือข่ายภายใต้ IP เดียวกันกับอุปกรณ์เพื่อตรวจสอบปัญหา ฟังก์ชันพร็อกซี่ของ FIRERPA นี้ รองรับการใช้อุปกรณ์ที่รัน FIRERPA เป็นเซิร์ฟเวอร์พร็อกซี่ HTTP ซึ่งหมายความว่าคุณสามารถใช้อุปกรณ์มือถือนี้เป็นเซิร์ฟเวอร์พร็อกซี่เพื่อส่งทราฟฟิกการสื่อสารผ่านทางออกเครือข่ายของอุปกรณ์นี้ได้ หรือในขณะที่คุณกำลังดักจับแพ็กเก็ต (packet capturing) แต่ไม่ต้องการให้ทราฟฟิกออกจากคอมพิวเตอร์ของคุณโดยตรง คุณสามารถตั้งค่าบริการพร็อกซี่นี้เป็นพร็อกซี่ต้นน้ำ (upstream proxy) ของ mitmproxy ได้ ด้วยวิธีนี้ คุณจะสามารถดักจับแพ็กเก็ตได้ และทราฟฟิกการสื่อสารทั้งหมดจะยังคงถูกส่งผ่านอุปกรณ์เดิม หรือใช้เครือข่ายที่ไม่ได้ใช้งานของอุปกรณ์จำนวนมากเป็นบริการพร็อกซี่ IP เป็นต้น

## การใช้งานพร็อกซี่

คุณสามารถไปที่การตั้งค่าของเบราว์เซอร์ Firefox -> กำหนดค่าพร็อกซี่ด้วยตนเอง (Manual proxy configuration) และตั้งค่า `192.168.0.2` พอร์ต `65000` เป็นพร็อกซี่ และติ๊กเลือก `ใช้พร็อกซี่นี้สำหรับ HTTPS ด้วย` (Also use this proxy for 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
```