Jawaban cepat
Bagaimana cara menggunakan proxy seluler 4G di Python dengan rotasi IP?
Berikan URL proxy http://USERNAME:[email protected]:7777 ke requests atau httpx, lalu panggil POST /api/v1/mobile/{portId}/rotate dengan kunci API Anda saat ingin IP operator baru. Tunggu balasan, biasanya 5–15 detik, dan hormati jeda 30 detik antar rotasi. CellMast port proxy residensial 4G/5G khusus mulai dari $2.63/hari, tanpa KYC, dibayar dengan crypto.
Yang Anda butuhkan
| Python | 3.10 atau lebih baru |
|---|---|
| Library | requests (HTTP), requests[socks] atau httpx[socks] untuk SOCKS5 |
| Gateway | gw.cellmast.com, port HTTP 7777, port SOCKS5 7778 |
| Kredensial port | Nama pengguna dan kata sandi dari area klien; setelah dukungan memindahkan port, baca kembali host, port, dan kata sandi di area klien karena bisa berubah |
| Kunci API | Dengan scope proxies, untuk rotasi |
| Nama pengguna pool berotasi | USERNAME-country-{cc}-session-{id}-ttl-{minutes} |
Bagaimana cara mengirim permintaan melalui port seluler?
Tetapkan URL proxy yang sama untuk http dan https. Untuk target HTTPS, requests membuka terowongan CONNECT melalui gateway, jadi target melihat IP operator dan TLS Anda tetap end to end.
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)Bagaimana cara saya merotasi IP dari Python?
Bungkus panggilan rotasi dalam sebuah helper yang memahami jawaban 429. Helper di bawah menunggu Retry-After saat Anda merotasi terlalu cepat, lalu memeriksa bahwa operator benar-benar memberi alamat baru.
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"))Bagaimana cara rotasi antar pekerjaan, bukan di dalamnya?
Jalankan satu pekerjaan pada satu alamat, lalu rotasi sebelum pekerjaan berikutnya. Ini menjaga konsistensi cookies dan login di dalam satu pekerjaan dan memberi setiap pekerjaan alamat baru.
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 exampleBagaimana cara menggunakan rotating pool dengan sticky sessions di httpx?
Pada pool per-GB tidak ada panggilan rotasi: nama pengguna yang menentukan. Tanpa session id, setiap koneksi baru akan mendapatkan IP baru. Klien HTTP menjaga koneksi tetap terbuka (keep-alive), jadi untuk IP baru per permintaan buka klien baru untuk setiap permintaan, atau kirim Connection: close. Dengan session-<id>-ttl-<minutes>, permintaan mempertahankan satu IP untuk waktu itu.
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)Kesalahan apa yang harus ditangani skrip saya?
- HTTP 429 dari API rotasi: Anda merotasi kurang dari 30 detik yang lalu. Tunggu selama
Retry-After. - HTTP 409
port_not_active: port sudah kadaluwarsa atau ditangguhkan. Periksa area klien. - Kesalahan koneksi proxy setelah rotasi: normal; modem sedang reconnect. Coba lagi setelah jeda singkat.
- HTTP 407 dari gateway: username atau password untuk port salah.
- Target menjawab 403 atau 429: perlambat dulu, lalu rotasi sekali. IP seluler bersifat bersama, dan kecepatan lebih tenang memperbaiki sebagian besar masalah ini.
Python dan proxy seluler: pertanyaan
Haruskah saya menggunakan HTTP atau SOCKS5 di Python?
HTTP lebih sederhana dan bekerja dengan requests biasa. SOCKS5 memerlukan ekstra requests[socks] tapi membawa semua lalu lintas TCP, dan socks5h:// menyelesaikan DNS di sisi proxy, bukan mesin Anda. Keduanya mencapai modem CellMast yang sama: HTTP di port 7777, SOCKS5 di port 7778.
Bisakah saya menggunakan asyncio dengan proxy seluler?
Ya. httpx.AsyncClient(proxy=...) dan aiohttp keduanya menerima URL proxy HTTP. Jaga konkruensi moderat di satu port khusus: ini satu modem dengan satu koneksi operator, jadi puluhan permintaan paralel berbagi tautan radio yang sama.
Bagaimana cara membuat Selenium atau Playwright menggunakan port tersebut?
Di Playwright, kirim proxy={"server": "http://gw.cellmast.com:7777", "username": "USERNAME", "password": "PASSWORD"} ke launch() atau new_context(). Opsi proxy Selenium tidak pakai password: jawab login proxy melalui autentikasi jaringan Selenium 4 BiDi, atau gunakan Playwright. Rotasi antar konteks browser, jangan saat halaman sedang dimuat.
Dapatkan port dan kunci API
Port khusus 4G/5G dari $2.63/hari, data seluler berputar dari US$1,50/GB. Bayar pakai crypto.