통합 · 초보자

Python 요청, httpx 및 aiohttp로 프록시를 사용하는 방법

라이브러리 당 구성의 세 가지 라인, 다음 같은 사용자 이름 구문: 국가, 도시 및 세션 프록시 URL에서 라이브, 그래서 하나의 게이트웨이는 모든 일을 제공합니다.

3 분 읽음 6개의 단면도 검토일 편집팀 Proxy Cyber

프록시 URL#

모든 파이썬 HTTP 라이브러리는 URL로 프록시를 취합니다. Proxy Cyber를 통해 URL은 자격 증명과 타겟팅 매개 변수 사용자 이름; hostname은 게이트웨이이며 포트는 프로토콜을 선택합니다.

프록시 URL
# Rotating: a new United States household on every new connection
http://USER-cc-us:PASS@res.proxy-cyber.com:9000

# Sticky: one Berlin household held for 30 minutes under the id "job42"
http://USER-cc-de-city-berlin-sid-job42-ttl-30m:PASS@res.proxy-cyber.com:9000

# SOCKS5 with remote DNS (socks5h), same parameters
socks5h://USER-cc-us:PASS@res.proxy-cyber.com:9001

* 이름 *#

연결 재사용 및 IP 할당은 다른 제어입니다. 클라이언트 세션은 소켓을 재사용합니다. 할당 된 게이트웨이는 교체 및 끈적한 세션 동작을 결정합니다. 귀하의 서비스로 제공되는 세션 매개 변수를 사용하고 여러 요청을 통해 출구를 확인합니다. 소켓을 닫거나 연결을 전송하십시오. 닫기는 다른 IP를 보장하지 않습니다.

* 이름 *
import requests

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
proxies = {"http": PROXY, "https": PROXY}

# One request, one exit
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=30)
print(r.text)

# A sticky flow: same exit for every request of this session
sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000"
s = requests.Session()
s.proxies = {"http": sticky, "https": sticky}
s.get("https://example.com/product/1", timeout=30)
s.post("https://example.com/cart", json={"id": 1}, timeout=30)

(주)#

httpx는 단일 proxy= 인자 (older version: proxies=). 그것은 CONNECT 터널을 통해 HTTP / 2를 지원하며 동기화 코드에서 동일한 방법을 사용합니다.

(주)
import httpx

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

with httpx.Client(proxy=PROXY, timeout=30) as client:
    print(client.get("https://api.ipify.org").text)

# async, one sticky exit per task
import asyncio

async def fetch(sid: str, url: str) -> str:
    proxy = f"http://USER-cc-us-sid-{sid}-ttl-10m:PASS@res.proxy-cyber.com:9000"
    async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
        return (await client.get(url)).text

asyncio.run(fetch("task1", "https://api.ipify.org"))

한국어 (ko)#

aiohttp는 요청 당 프록시를 가지고 있거나 세션당 HTTP 프록시를 기본적으로 말하며, SOCKS5는 필요하다. aiohttp-socks 연결관.

한국어 (ko)
import aiohttp, asyncio

PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"

async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.ipify.org", proxy=PROXY, timeout=aiohttp.ClientTimeout(total=30)) as r:
            print(await r.text())

asyncio.run(main())

회전, 유지 보수 및 재개#

  • 새로운 TCP 연결은 새로운 출구의 증거가 아닌 새로운 수송 연결입니다. 게이트웨이의 할당된 회전 모드는 그 연결이 경로를 결정합니다.
  • 지정된 게이트웨이가 지원되는 각 독립적 인 워크플로우에 대한 별도의 세션 식별자를 사용합니다. 연결 세부 사항의 허용 된 기간 및 위치 매개 변수를 확인하십시오. 요청 된 기간 전에 주거 장치가 차단 될 수 있습니다. 끈적한 세션은 일 동안 동일한 IP를 보장하지 않습니다. 고정 된 주소의 경우 전용 정적 인 제품을 비교하십시오.
  • 재시동하기 전에 응답을 분류합니다. 403은 다른 IP가 해결되지 않을 수있는 액세스 규칙을 나타냅니다. 429의 존경 Retry-After 및 요청 속도를 감소; 임시 연결 또는 서버 실패에 대한 경계 백 오프를 사용합니다. 중복 작업을 방지 할 때만 재시동 작업.
  • 출구 유형에 timeouts를 놓으십시오: 15 s는 연결하고 45 s는 주거를 위해, 더 많은 것을 자동차를 위해 읽었습니다.

기가 바이트 절약#

주거 교통은 양쪽 방향으로 GB 당 청구됩니다. 압축 된 응답을 요청하십시오 (Accept-Encoding: gzip, br 기본적으로 이 라이브러리에 의해 입니다), JSON endpoints를 HTML로 선호하고, 이미지, 글꼴 또는 미디어를 다운로드하지 않는 것은 데이터입니다. 350 KB 페이지는 저렴합니다. 자산이 4MB 페이지는 아닙니다.

자주 묻는 질문#

왜 나는 요청과 동일한 IP를 얻고 있습니까?

반복된 IP는 연결 풀, 활동적인 끈끈한 회의 또는 유효한 수영장에서 결과를 초래할 수 있습니다. 할당한 여정 형태를 비교하고 타임스탬프를 가진 몇몇 요구를 시험하십시오. 요구.Session는 연결과 쿠키를 처리합니다; 그것은 자체가 프록시 출구를 선정하지 않습니다.

HTTPS 사이트에 대한 다른 프록시가 필요합니까?

아니. 같은 http:// 프록시 URL은 CONNECT 터널을 통해 HTTPS 목적지를 처리; TLS는 코드와 사이트 사이에 끝으로 종료.

모바일 프록시에 동일한 코드를 사용할 수 있나요?

예: mob.proxy-cyber.com을 사용하여 res.proxy-cyber.com을 대체합니다. 포트, 자격 및 매개 변수는 동일합니다.

당신의 계정

한 계정에서 프록시 관리

네트워크, 장소 주문 및 한 대시보드에서 균형 및 지원 요청을 따르십시오. 우리의 팀 리뷰 지불 및 배달 후 연결 세부 사항을 제공합니다.

계정 만들기