KYC 없이 — 신분증, 셀피, 문서 불필요. 암호화폐로 결제: BTC, USDT, USDC, ETH, SOL, LTC.
언어: 한국어
포트 임대

가이드 · Python 3 · requests, httpx, SOCKS5

Python에서 IP 회전이 가능한 모바일 프록시 사용법

CellMast 전용 포트 또는 회전 모바일 풀용 복사 가능 Python 코드: 연결, 회전, 새 주소 대기, API 과부하 없이 재시도.

마지막 업데이트: · 3 최소 읽기

빠른 답변

Python에서 IP 회전과 함께 모바일 프록시는 어떻게 사용하나요?

프록시 URL http://USERNAME:[email protected]:7777을 requests 또는 httpx에 전달하고 새 캐리어 IP가 필요할 때 API 키와 함께 POST /api/v1/mobile/{portId}/rotate을 호출하세요. 응답은 보통 5~15초 걸리며 회전 간 30초 간격을 지켜야 합니다. CellMast 전용 4G/5G 포트는 일일 $2.63부터 시작, KYC 없이, 암호화폐로 결제 가능.

필요한 것

Python3.10 이상
라이브러리requests (HTTP), SOCKS5용 requests[socks] 또는 httpx[socks]
게이트웨이gw.cellmast.com, HTTP 포트 7777, SOCKS5 포트 7778
포트 자격 증명클라이언트 영역에서 받은 사용자 이름과 비밀번호; 지원 팀이 포트를 이동하면 호스트, 포트, 비밀번호가 바뀔 수 있으니 클라이언트 영역에서 다시 확인하세요.
API 키회전을 위한 proxies 범위 포함
회전 풀 사용자 이름USERNAME-country-{cc}-session-{id}-ttl-{minutes}

모바일 포트를 통해 요청을 보내려면 어떻게 해야 하나요?

http와 https에 동일한 프록시 URL을 설정하세요. HTTPS 대상의 경우 requests가 게이트웨이를 통해 CONNECT 터널을 열어 대상이 캐리어 IP를 볼 수 있으며 TLS는 종단 간(end to end)으로 유지됩니다.

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)

Python에서 IP를 회전하려면 어떻게 해야 하나요?

429 응답을 이해하는 헬퍼 안에 회전 호출을 감싸세요. 아래 헬퍼는 너무 빨리 회전할 경우 Retry-After 만큼 기다린 후 캐리어가 실제로 새 주소를 제공했는지 확인합니다.

회전 헬퍼
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"))

작업 중간이 아니라 작업 사이에서 IP를 회전하려면?

하나의 작업을 하나의 주소에서 실행한 후 다음 작업 전에 회전하세요. 이렇게 하면 작업 내에서는 쿠키와 로그인 상태가 일관되고 각 작업에 새 IP가 주어집니다.

작업당 하나의 IP
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

httpx에서 스티키 세션과 함께 회전 풀을 사용하려면?

GB 단위 풀에는 회전 호출이 없습니다: 사용자 이름이 결정합니다. 세션 ID가 없으면 각 새 연결마다 새 IP가 할당됩니다. HTTP 클라이언트는 연결을 유지(keep-alive)하므로 요청당 새 IP를 원하면 각 요청마다 새 클라이언트를 열거나 Connection: close를 보내세요. session-<id>-ttl-<minutes>를 사용하면 요청이 해당 시간 동안 하나의 IP를 유지합니다.

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)

내 스크립트가 어떤 오류를 처리해야 하나요?

  • 회전 API에서 HTTP 429: 30초도 안 되어 회전했음. Retry-After 만큼 기다리세요.
  • HTTP 409 port_not_active: 포트가 만료되었거나 정지됨. 클라이언트 영역에서 확인하세요.
  • 회전 직후 프록시 연결 오류: 정상입니다; 모뎀이 재연결 중일 수 있으니 잠시 기다렸다 재시도하세요.
  • 게이트웨이에서 HTTP 407: 포트의 사용자명 또는 비밀번호가 잘못됨.
  • 대상 서버가 403 또는 429 응답: 속도를 줄인 뒤 회전 한 번 하세요. 모바일 IP는 공유되므로 느린 속도가 대부분 문제를 해결합니다.

Python과 모바일 프록시 관련 질문

Python에서 HTTP와 SOCKS5 중 무엇을 사용해야 하나요?

HTTP가 더 간단하며 plain requests에서 작동합니다. SOCKS5는 requests[socks]가 추가로 필요하지만 모든 TCP 트래픽을 처리하고, socks5h://는 DNS를 클라이언트가 아닌 프록시 쪽에서 해결합니다. 둘 다 같은 CellMast 모뎀에 도달하며 HTTP는 포트 7777, SOCKS5는 포트 7778를 사용합니다.

asyncio를 모바일 프록시와 함께 사용할 수 있나요?

예. httpx.AsyncClient(proxy=...)와 aiohttp 모두 HTTP 프록시 URL을 허용합니다. 단일 전용 포트에서 적당한 동시성으로 유지하세요: 한 모뎀과 한 캐리어 연결이라 수십 개의 병렬 요청이 동일한 무선 링크를 공유합니다.

Selenium이나 Playwright에서 포트를 사용하려면?

Playwright에서는 proxy={"server": "http://gw.cellmast.com:7777", "username": "USERNAME", "password": "PASSWORD"}를 launch() 또는 new_context()에 전달하세요. Selenium 프록시 옵션에는 비밀번호가 없으며 Selenium 4 BiDi 네트워크 인증으로 프록시 로그인을 처리하거나 Playwright를 사용하세요. 페이지가 로드 중일 때는 회전하지 말고 브라우저 컨텍스트 사이에서 회전하세요.

포트와 API 키 얻기

일일 $2.63의 전용 4G/5G 포트, US$1.50/GB의 회전형 모바일 데이터. 암호화폐로 결제하세요.

무제한 데이터

포트 임대