# Hoe gebruik ik een mobiele proxy in Python, met IP-rotatie

> Python-code voor 4G/5G mobiele proxy's: requests en httpx via HTTP of SOCKS5, roteer het IP via API, beheer 429-limieten, sticky sessions. Zonder KYC.

- URL: https://cellmast.com/nl/guides/python-mobile-proxy/
- Laatst bijgewerkt: 2026-10-13
- Publisher: CellMast (https://cellmast.com)

Klaar-om-te-kopiëren Python-code voor een CellMast dedicated poort of de roterende mobiele pool: verbinden, roteren, wachten op het nieuwe adres, en opnieuw proberen zonder de API te overbelasten.

**Snel antwoord — Hoe gebruik ik een mobiele proxy in Python met IP-rotatie?**

Geef de proxy-URL `http://USERNAME:PASSWORD@gw.cellmast.com:7777` door aan `requests` of `httpx`, en roep `POST /api/v1/mobile/{portId}/rotate` aan met je API-sleutel wanneer je een nieuw carrier IP wilt. Wacht op het antwoord, dat meestal 5–15 seconden duurt, en respecteer de 30-seconden pauze tussen rotaties. **CellMast** dedicated 4G/5G poorten beginnen bij $2,63/dag, zonder KYC, betaling in crypto.

## Wat heb je nodig

| Kenmerk | Waarde |
| --- | --- |
| Python | 3.10 of nieuwer |
| Bibliotheken | `requests` (HTTP), `requests[socks]` of `httpx[socks]` voor SOCKS5 |
| Gateway | `gw.cellmast.com`, HTTP-poort 7777, SOCKS5-poort 7778 |
| Poortinloggegevens | Gebruikersnaam en wachtwoord uit het klantgedeelte; nadat support een poort verplaatst, lees de host, poorten en het wachtwoord opnieuw in het klantgedeelte, want die kunnen veranderen |
| API-sleutel | Met de `proxies` scope, voor rotatie |
| Gebruikersnaam van de roterende pool | `USERNAME-country-{cc}-session-{id}-ttl-{minutes}` |

## Hoe stuur ik een verzoek via een mobiele poort?

Stel dezelfde proxy-URL in voor `http` en `https`. Voor HTTPS-doelen opent `requests` een CONNECT-tunnel via de gateway, zodat het doel de carrier IP ziet en je TLS end-to-end blijft.

*verzoeken via HTTP*

```python
import requests

PROXY = "http://USERNAME:PASSWORD@gw.cellmast.com:7777"
proxies = {"http": PROXY, "https": PROXY}

r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
print(r.json())  # {'ip': '<carrier IP>'}
```

*SOCKS5 (pip install "requests[socks]")*

```python
import requests

# socks5h: the proxy resolves the hostname, not your machine
PROXY = "socks5h://USERNAME:PASSWORD@gw.cellmast.com:7778"
r = requests.get("https://api.ipify.org", proxies={"http": PROXY, "https": PROXY}, timeout=30)
print(r.text)
```

## Hoe roteer ik het IP-adres vanuit Python?

Verpak de rotatieaanroep in een helper die de 429 reactie begrijpt. De onderstaande helper wacht `Retry-After` als je te snel roteert, en controleert dan of de carrier echt een nieuw adres heeft gegeven.

*Rotatiehulp*

```python
import time
import requests

API = "https://cellmast.com/api/v1"
KEY = "API_KEY"

def rotate(port_id: str, tries: int = 3) -> str:
    """Ask the modem for a new carrier IP and return it."""
    for _ in range(tries):
        r = requests.post(f"{API}/mobile/{port_id}/rotate",
                          headers={"Authorization": f"Bearer {KEY}"}, timeout=60)
        if r.status_code == 429:  # rotation_too_soon
            time.sleep(int(r.headers.get("Retry-After", "30")))
            continue
        r.raise_for_status()
        data = r.json()
        if data["ip"] != data.get("previousIp"):
            return data["ip"]
        time.sleep(30)  # same IP from the carrier: wait and try again
    raise RuntimeError("no new IP after several tries")

print("new IP:", rotate("PORT_ID"))
```

## Hoe roteer ik tussen taken, niet binnen taken?

Voer een hele taak uit met één adres, roteer daarna pas naar het volgende. Dit behoudt cookies en inloggegevens binnen een taak en geeft elke taak een nieuw adres.

*Één IP per taak*

```python
import requests

PROXY = "http://USERNAME:PASSWORD@gw.cellmast.com:7777"

def run_job(urls):
    with requests.Session() as s:
        s.proxies = {"http": PROXY, "https": PROXY}
        for url in urls:
            resp = s.get(url, timeout=30)
            print(resp.status_code, url)

jobs = [["https://example.com/a", "https://example.com/b"],
        ["https://example.com/c"]]
for urls in jobs:
    run_job(urls)
    rotate("PORT_ID")  # helper from the previous example
```

## Hoe gebruik ik de roterende pool met sticky sessions in httpx?

In de per-GB pool is er geen rotatieaanroep: de gebruikersnaam bepaalt dat. Zonder sessie-id krijgt elke nieuwe verbinding een nieuw IP. HTTP-clients houden verbindingen open (keep-alive), dus voor een nieuw IP per verzoek open je een nieuwe client per verzoek, of stuur `Connection: close`. Met `session-<id>-ttl-<minutes>` houden verzoeken één IP vast voor die tijd.

*httpx (pip install httpx)*

```python
import uuid
import httpx

def pool_client(country: str = "us", minutes: int | None = None) -> httpx.Client:
    user = f"USERNAME-country-{country}"
    if minutes:
        user += f"-session-{uuid.uuid4().hex[:8]}-ttl-{minutes}"
    proxy = f"http://{user}:PASSWORD@gw.cellmast.com:7777"
    return httpx.Client(proxy=proxy, timeout=30)

with pool_client("gb", minutes=10) as c:   # same UK mobile IP for 10 minutes
    print(c.get("https://api.ipify.org").text)
    print(c.get("https://api.ipify.org").text)
```

## Welke fouten moet mijn script afhandelen?

- **HTTP 429 van de rotatie-API:** je roteerde minder dan 30 seconden geleden. Wacht `Retry-After`.
- **HTTP 409 `port_not_active`:** de poort is verlopen of geschorst. Controleer het klantgedeelte.
- **Proxy-verbinding fouten net na rotatie:** normaal; het modem maakt opnieuw verbinding. Probeer het na korte pauze opnieuw.
- **HTTP 407 van de gateway:** verkeerde gebruikersnaam of wachtwoord voor de poort.
- **Doelen die 403 of 429 antwoorden:** vertraag eerst, roteer dan één keer. Mobiele IP's worden gedeeld, een rustiger tempo lost de meeste problemen op.

## Python en mobiele proxy's: veelgestelde vragen

### Moet ik HTTP of SOCKS5 gebruiken in Python?

HTTP is eenvoudiger en werkt met gewone `requests`. SOCKS5 heeft de extra `requests[socks]` nodig maar draagt al het TCP-verkeer, en `socks5h://` lost DNS op de proxyzijde op in plaats van op je machine. Beiden bereiken hetzelfde CellMast modem: HTTP via poort 7777, SOCKS5 via poort 7778.

### Kan ik asyncio gebruiken met een mobiele proxy?

Ja. `httpx.AsyncClient(proxy=...)` en `aiohttp` accepteren beide een HTTP proxy-URL. Houd de gelijktijdigheid matig op een enkele toegewijde poort: het is één modem op één carrierverbinding, dus tientallen parallelle verzoeken delen dezelfde radiolink.

### Hoe laat ik Selenium of Playwright de poort gebruiken?

Geef in Playwright `proxy={"server": "http://gw.cellmast.com:7777", "username": "USERNAME", "password": "PASSWORD"}` mee aan `launch()` of `new_context()`. Selenium's proxy-opties bevatten geen wachtwoord: voer de proxy-login in via Selenium 4 BiDi netwerk authenticatie, of gebruik Playwright. Roteer tussen browsercontexten, nooit terwijl een pagina laadt.

**Krijg een poort en een API-sleutel** Toegewijde 4G/5G poorten van $2,63/dag, roterende mobiele data van US$ 1,50/GB. Betaal in crypto. [Bekijk prijzen](https://cellmast.com/nl/pricing/) · [Mobiele API referentie](https://cellmast.com/docs/api/mobile/)

---

CellMast: CellMast is een provider van mobiele 4G/5G mobiele 4G-proxy's: dedicated carrier modems met onbeperkt verkeer, plus een roterend mobiel pool per GB, betaald met crypto zonder ID-upload.
