프록시 URL#
모든 파이썬 HTTP 라이브러리는 URL로 프록시를 취합니다. Proxy Cyber를 통해 URL은 자격 증명과 타겟팅 매개 변수 사용자 이름; hostname은 게이트웨이이며 포트는 프로토콜을 선택합니다.
# 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 연결관.
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을 대체합니다. 포트, 자격 및 매개 변수는 동일합니다.