Files

83 lines
3.9 KiB
Markdown

# ZTE MF935 Router IP Rotation
## Device
ZTE MF935 4G Mobile Hotspot (Vodafone Ukraine). Admin panel: `http://192.168.0.1`. UI language: Ukrainian.
## Key Discovery
**Simple disconnect/reconnect does NOT change the IP.** Vodafone assigns a sticky IP based on the SIM card. The same IP is returned after reconnect even with 40+ seconds of disconnection.
**Switching network mode forces a new IP allocation.** The carrier's 4G and 3G pools are separate — switching between them always yields a fresh IP.
## Procedure
### Step 1: Disconnect
Navigate to `http://192.168.0.1/index.html#home`. Click the **"Відєднати"** (Disconnect) button. Verify: traffic shows 0MB, timer 00:00:00, button changes to **"Підєднати"** (Connect).
### Step 2: Switch to 3G
Navigate to `http://192.168.0.1/index.html#net_select`. Settings are unlocked only while disconnected.
1. Select **"Тільки 3G"** from the network mode dropdown
2. Click **"Застосувати"** (Apply)
3. Go back to home page — header should show **"WCDMA"** instead of "LTE"
4. Click **"Підєднати"** (Connect)
5. Wait ~8 seconds for connection
6. Verify IP: `curl -s ifconfig.me` — should differ from old IP
### Step 3: Switch back to 4G (optional, for speed)
Repeat the procedure but select **"Тільки 4G"** instead of 3G. This gives ANOTHER fresh IP from the 4G pool.
1. Disconnect
2. Navigate to `#net_select`
3. Select **"Тільки 4G"**
4. Apply
5. Go home — header shows **"LTE"**
6. Connect
7. Verify IP
### Automation via Chrome DevTools
The entire procedure can be scripted through `mcp__chrome_devtools__` tools:
```
1. navigate_page → http://192.168.0.1/index.html#home
2. take_snapshot → find "Відєднати" button uid
3. click → disconnect
4. navigate_page → http://192.168.0.1/index.html#net_select
5. take_snapshot → find combobox and "Застосувати" button
6. fill → select "Тільки 3G" (or "Тільки 4G")
7. click → "Застосувати"
8. navigate_page → http://192.168.0.1/index.html#home
9. take_snapshot → find "Підєднати" button
10. click → connect
11. evaluate_script → wait 8s
12. terminal → curl -s ifconfig.me
```
## Pitfalls
- **Settings locked while connected**: The "Для зміни налаштувань відєднайтеся від мережі" message means you must disconnect first. All radio buttons and dropdowns are disabled while connected.
- **Sticky IP on same mode reconnect**: If you disconnect and reconnect on the same network mode (4G→4G or 3G→3G), the IP stays the same. MUST switch modes.
- **Goform API rejected**: Direct API calls to `/goform/goform_set_cmd_process` with `DISCONNECT_NETWORK`, `CONNECT_NETWORK`, `REBOOT_DEVICE` etc. return `{"result":"failure"}` — the API requires authentication. Use the browser UI instead.
- **3G is slow**: ~0.9 Mb/s download vs 8.8 Mb/s on 4G. Switch back to 4G after getting the new IP.
## Tested IPs
| Date | Old IP | New IP | Method |
|------|--------|--------|--------|
| 2026-08-10 | [REDACTED-IP] | [REDACTED-IP] | 4G→3G |
| 2026-08-10 | [REDACTED-IP] | [REDACTED-IP] | 3G→4G |
| 2026-08-10 | [REDACTED-IP] | [REDACTED-IP] | 4G disconnect only (unexpected — sticky IP failed this time) |
| 2026-08-10 | [REDACTED-IP] | [REDACTED-IP] | 4G→3G |
| 2026-08-10 | [REDACTED-IP] | (not tested) | 3G→4G (pending) |
All IPs are from Vodafone Ukraine's mobile pool (178.133.x.x and 178.150.x.x ranges for 3G/4G, 89.209.x.x for older 4G sessions).
## Rate-limit bypass
**Tokenharbor signup rate-limits by IP subnet.** After ~4-5 signup attempts on a 4G IP, tokenharbor returns `"Too many sign-ups from this network"`. The 178.x.x.x 4G subnet appears to share a rate-limit counter. **Switching to 3G gives a different pool that bypasses the limit.** Confirmed: 4G `[REDACTED-IP]` → rate-limited, 3G `[REDACTED-IP]` → signup succeeded. The 3G pool has a separate (or no) rate-limit counter.