Zonder KYC — geen ID, geen selfie, geen documenten. Betaald in crypto: BTC, USDT, USDC, ETH, SOL, LTC.
Taal: Nederlands
Huur een port

Handleiding · Python 3 · requests, httpx, SOCKS5

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

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.

Laatst bijgewerkt: · 4 min lezen

Snel antwoord

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

Geef de proxy-URL http://USERNAME:[email protected]: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

Python3.10 of nieuwer
Bibliothekenrequests (HTTP), requests[socks] of httpx[socks] voor SOCKS5
Gatewaygw.cellmast.com, HTTP-poort 7777, SOCKS5-poort 7778
PoortinloggegevensGebruikersnaam 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-sleutelMet de proxies scope, voor rotatie
Gebruikersnaam van de roterende poolUSERNAME-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
import requests

PROXY = "http://USERNAME:[email protected]: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]")
import requests

# socks5h: the proxy resolves the hostname, not your machine
PROXY = "socks5h://USERNAME:[email protected]: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
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
import requests

PROXY = "http://USERNAME:[email protected]: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)
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}:[email protected]: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.

Onbeperkte data

Huur een port