# 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.