Hızlı cevap
IP döndürmeli Python'da mobil proxyyi nasıl kullanırım?
Proxy URL'si http://USERNAME:[email protected]:7777'ü requests veya httpx'ya geçirin, yeni taşıyıcı IP istediğinizde API anahtarınızla POST /api/v1/mobile/{portId}/rotate'yi çağırın. Yanıtı bekleyin, genellikle 5-15 saniye sürer, dönüşler arasında 30 saniye aralık bırakın. CellMast özel 4G/5G portlar Günde $2.63'ten başlar, KYC olmadan, kriptoyla ödenir.
Gerekli olanlar
| Python | 3.10 veya daha yeni |
|---|---|
| Kütüphaneler | requests (HTTP), SOCKS5 için requests[socks] veya httpx[socks] |
| Gateway | gw.cellmast.com, HTTP portu 7777, SOCKS5 portu 7778 |
| Port kimlik bilgileri | Kullanıcı adı ve şifre istemci alanından; destek bir portu taşıdığında, host, portlar ve şifreyi istemci alanında tekrar okuyun çünkü değişebilirler |
| API anahtarı | proxies kapsamıyla, döndürme için |
| Dönen havuz kullanıcı adı | USERNAME-country-{cc}-session-{id}-ttl-{minutes} |
Mobil bir port üzerinden istek nasıl gönderilir?
http ve https için aynı proxy URL'sini ayarlayın. HTTPS hedeflerinde, requests ağ geçidi üzerinden bir CONNECT tüneli açar, böylece hedef taşıyıcı IP'sini görür ve TLS bağlantınız uçtan uca korunur.
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>'}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)Python'dan IP nasıl döndürülür?
Döndürme çağrısını 429 yanıtını anlayan bir yardımcı fonksiyonda sarmalayın. Aşağıdaki yardımcı, çok erken döndürdüğünüzde Retry-After bekler, ardından taşıyıcının gerçekten yeni bir adres verip vermediğini kontrol eder.
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"))İşler arasında, içinde değil, nasıl döndürüyorum?
Bir işi tek bir adreste çalıştırın, sonra bir sonraki iş için döndürün. Bu, işlem aşamasında çerezlerin ve girişlerin tutarlı kalmasını sağlar ve her iş için yeni bir adres sunar.
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 examplehttpx'te yapışkan oturumlarla dönen havuzu nasıl kullanırım?
GB başı havuzda bir döndürme çağrısı yoktur: kullanıcı adı belirler. Oturum kimliği olmadan, her yeni bağlantı yeni bir IP alır. HTTP istemcileri bağlantıyı açık tutar (keep-alive), bu yüzden her istek için yeni bir IP almak için her istek için yeni bir istemci açın veya Connection: close gönderin. session-<id>-ttl-<minutes> ile istekler o süre için aynı IP'yi kullanır.
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)Betim ne tür hatalarla başa çıkmalı?
- Döndürme API'sinden HTTP 429: 30 saniyeden kısa sürede döndürdünüz.
Retry-Afterkadar bekleyin. - HTTP 409
port_not_active: port süresi doldu veya askıya alındı. Müşteri alanını kontrol edin. - Döndürmeden hemen sonra proxy bağlantı hataları: normal; modem yeniden bağlanıyor. Kısa bir duraklamadan sonra tekrar deneyin.
- Ağ geçidinden HTTP 407: port için yanlış kullanıcı adı veya parola.
- 403 veya 429 yanıtı veren hedefler: önce yavaşlayın, sonra bir kez döndürün. Mobil IP'ler paylaşılır; daha sakin bir hız çoğunu çözer.
Python ve mobil proxyler: sorular
Python'da HTTP mi yoksa SOCKS5 mi kullanmalıyım?
HTTP daha basittir ve düz requests ile çalışır. SOCKS5 ek requests[socks] gerektirir ama herhangi bir TCP trafiğini taşır ve socks5h:// DNS'i makineniz yerine proxy tarafında çözer. İkisi de aynı CellMast modemine erişir: HTTP port 7777, SOCKS5 port 7778 üzerinden.
Mobil proxy ile asyncio kullanabilir miyim?
Evet. httpx.AsyncClient(proxy=...) ve aiohttp her ikisi de HTTP proxy URL'si kabul eder. Tek bir özel portta eşzamanlılığı makul düzeyde tutun: tek bir taşıyıcı bağlantısı olan bir modemdir, bu yüzden onlarca paralel istek aynı radyo bağlantısını paylaşır.
Selenium veya Playwright'a portu nasıl kullandırırım?
Playwright'ta, proxy={"server": "http://gw.cellmast.com:7777", "username": "USERNAME", "password": "PASSWORD"}'yi launch() veya new_context()'e geçirin. Selenium proxy seçenekleri parola kabul etmez: proxy girişini Selenium 4 BiDi ağ kimlik doğrulamasıyla sağlayın veya Playwright kullanın. Tarayıcı bağlamları arasında döndürün, sayfa yüklenirken döndürmeyin.
Port ve API anahtarı alın
Günde $2.63'dan özel 4G/5G portları, $1,50/GB'den dönen mobil veri. Kripto ile ödeyin.