aiohttp는 요청 옵션을 통해 HTTP 프록시 지원을 문서화합니다. SOCKS 엔드포인트에는 SOCKS를 말하는 구현이 필요합니다. 프록시 URL의 포트를 1080으로 바꾸는 것으로는 그 구현이 제공되지 않습니다.

async 함수 내부에서는 유지 관리되는 aiohttp-socks 프로젝트가 제공하는 커넥터를 사용하십시오:

import aiohttp
from aiohttp_socks import ProxyConnector

connector = ProxyConnector.from_url('socks5://203.0.113.10:1080')
async with aiohttp.ClientSession(connector=connector) as session:
    async with session.get('https://example.com/') as response:
        body = await response.read()

이는 커넥터 패키지가 이미 사용 가능하고 애플리케이션의 aiohttp 버전과 호환된다고 가정합니다. 엔드포인트는 예시입니다. SOCKS5 프록시 목록은 커넥터 URL에 사용할 공개 후보를 제공합니다. 실제 워크로드에 맞게 타임아웃과 응답 크기 정책을 구성하십시오.

오래된 답변은 서로 다른 패키지와 커넥터 이름을 언급합니다. aiosocks, aiosocksy, aiohttp-socks는 상호 교환 가능한 가져오기 경로가 아닙니다. 실제로 사용하는 패키지의 요구 사항과 예제를 읽으십시오. 한 프로젝트의 클래스를 다른 프로젝트의 인수와 결합하면 프록시 연결을 시도하기 전에 실패할 수 있습니다.

커넥터와 세션 수명을 함께 유지하고, 중요한 곳에서는 호스트 이름 확인 동작을 점검하십시오. SOCKS URL을 무관한 HTTP 프록시 옵션에 전달하는 것은 커넥터의 문서화된 경로를 대신하지 못합니다.

관련 글