Python Requests에서 프록시 사용하는 방법 (HTTP/HTTPS & Session 풀링)
업데이트:
Python의 requests 라이브러리는 'http'와 'https' 스킴 모두를 http://user:pass@ip:port로 매핑하는 proxies 딕셔너리를 통해 인증된 VinaProxy 프록시를 지원합니다. 이 딕셔너리를 지속적인 requests.Session() 인스턴스에 할당하면 기본 TCP 소켓이 재사용되어 빠른 속도와 적은 오버헤드로 웹 스크래핑을 수행할 수 있습니다.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1개 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
proxies 딕셔너리 구성 및 Session 연결 재사용
모든 URL마다 개별적으로 requests.get()을 호출하면 매번 새로운 TCP 핸드셰이크와 TLS 암호화 협상이 발생합니다. 프록시 설정을 session = requests.Session()에 바인딩하면 연속적인 요청 전체에서 프록시 터널을 열어둔 상태로 유지할 수 있습니다.
| Requests 매개변수 | 권장 코드 구문 | 기술적 목적 |
|---|---|---|
'http' 키 | 'http://user:pass@ip:port' | 일반 HTTP 요청을 프록시로 라우팅 |
'https' 키 | 'http://user:pass@ip:port' | urllib3가 TLS를 위한 HTTP CONNECT 터널을 열도록 http:// 스킴 사용 |
timeout 튜플 | timeout=(5, 15) | 5초 연결 및 15초 읽기 타임아웃으로 워커 스레드 먹통 방지 |
| IP 풀 로테이션 | itertools.cycle(proxy_list) | 구독한 고정 전용 IP 풀 전체에 요청을 균등하게 분산 |
urllib3 및 ProxyError 흔한 오류 방지 팁
- 프록시 포트가 명시적으로 TLS-over-TLS를 요구하지 않는 한,
'http'및'https'딕셔너리 키 모두 프록시 URL 스킴으로 항상http://(https://아님)를 사용해야 합니다 - 비밀번호에 특수 문자가 포함된 경우
urllib.parse.quote(password, safe='')로 URL 인코딩을 적용하세요 407 Proxy Authentication Required에러는 URL 문자열에 입력된 사용자 이름이나 비밀번호가 대시보드 정보와 일치하지 않음을 의미합니다httpx.Client(proxy='http://user:pass@ip:port')및aiohttp의session.get(url, proxy=...)에서도 동일한 방식으로 작동합니다
단계별 안내
- 1
ip:port:user:pass를 URL 형식으로 변환
당사의 프록시 포맷 변환기를 사용하여 VinaProxy 목록을
http://user:pass@ip:port형식으로 변환합니다. - 2
proxies 딕셔너리 정의
Python 스크립트에
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}를 선언합니다. - 3
requests.Session() 인스턴스에 적용
s = requests.Session()을 초기화하고s.proxies.update(proxies)를 호출하여Keep-Alive소켓 풀링을 활성화합니다. - 4
테스트 요청으로 최종 IP 검증
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())을 실행하여 응답 JSON에 프록시 IP가 표시되는지 확인합니다.
자주 묻는 질문
왜 'https' 키에도 'http://user:pass@ip:port'를 사용하나요?
http:// 접두사는 urllib3에게 프록시 서버 자체에 연결하는 프로토콜(표준 HTTP CONNECT 방식)을 지시하며, 대상 https:// 사이트와의 엔드투엔드 통신은 완벽하게 TLS 암호화됩니다.
Python에서 25개의 고정 프록시를 요청마다 균등하게 순환시키는 방법은?
25개의 프록시 URL을 pool = itertools.cycle(PROXIES)로 로드한 후 요청마다 proxies={'http': p, 'https': p}를 전달하고 IP별 적절한 속도 제한을 적용하세요.
VinaProxy는 Python 스크래핑 스크립트의 대역폭을 제한하거나 종량 과금하나요?
아닙니다. 모든 전용 IPv4 및 고정 주거용 ISP 요금제는 트래픽 무제한으로 제공됩니다.
대역폭 무제한 Python 스크래핑 프록시 풀 구축
전 세계 7개국의 전용 IPv4 및 고정 주거용 ISP 프록시 즉시 발급.
Python 프록시 구매하기