브라우저 사용 프록시 구성: 세션별 종료 IP
브라우저 사용 프록시를 검색하면 Google은 Chrome 설정 대화 상자를 제공합니다. 이것이 다른 점입니다: 인증된 주거용 IP를 통해 브라우저 사용 AI 에이전트 라이브러리를 라우팅하는 것, 에이전트당 하나씩.
브라우저 사용 프록시를 검색하면 Google은 Chrome의 설정 대화 상자, chrome.proxy 확장 API 및 기업 PAC 파일 튜토리얼을 제공합니다. 그것들은 당신이 찾고 있던 것이 아닙니다. 당신은 브라우저 사용 - 108k GitHub 스타를 가진 Python 라이브러리로 LLM이 실제 브라우저를 구동할 수 있게 하는 - 를 인증된 프록시를 통해 라우팅하고 싶습니다, 그래서 에이전트가 사무실 IP에서 타겟을 두드리지 않도록. 이것이 그 가이드입니다: 매개변수가 실제로 어디에 있는지, 업그레이드 후 조용히 작동을 멈추는 이유, 각 병렬 에이전트에 고유한 종료 IP를 제공하는 방법, IP가 그 아래에서 이동할 때 긴 작업에 무슨 일이 일어나는지.
브라우저 사용 프록시 매개변수가 실제로 있는 곳
프록시는 브라우저 세션의 속성이지 에이전트의 속성이 아닙니다. 현재 라이브러리에서는 Browser가 BrowserSession의 별칭이며, 문서에서는 이들이 정확히 동일한 클래스라고 명시되어 있습니다. 따라서 하나의 이름을 사용하는 모든 튜토리얼은 다른 이름에도 적용됩니다. 매개변수는 proxy이며, 문서에서는 이를 ProxySettings로 네 가지 필드: server, bypass, username, password로 타입합니다. 대부분의 사람들이 전달하는 것처럼 동등한 dict도 작동합니다:
import asyncio
from browser_use import Agent, Browser
# llm = ... your model of choice; see the browser-use docs for the import
PROXY = {
"server": "http://gate.quantumproxies.io:8000", # scheme is mandatory
"username": "USER",
"password": "PASS",
"bypass": "localhost,127.0.0.1", # keep local calls off the proxy
}
browser = Browser(proxy=PROXY, headless=False)
async def main():
agent = Agent(
task="Open https://api.ipify.org?format=json and report the IP you see",
llm=llm,
browser_session=browser,
)
await agent.run()
asyncio.run(main())
사람들이 잘못 이해하는 두 가지 세부 사항. 첫째, 자격 증명은 username 및 password 필드에 있어야 하며, server에 넣어서는 안 됩니다 - Chromium은 URL에 포함된 비밀번호에서 프록시 인증 챌린지에 응답하지 않으며, 브라우저 사용에는 이를 입력할 대화 상자가 없습니다. 둘째, server에는 스킴이 필요합니다. gate.quantumproxies.io:8000은 프록시 URL이 아닙니다; http://gate.quantumproxies.io:8000가 맞습니다. 자격 증명이 문제가 되는 경우, 서버의 IP를 화이트리스트에 추가하면 사용자:비밀번호를 완전히 제거합니다 - 게이트웨이는 호출자를 인식하고 브라우저는 407을 보지 않습니다.
브라우저 사용 프록시 구성이 조용히 아무것도 하지 않는 이유
이 주제에 대한 가장 많이 방문한 페이지는 2025년 7월에 제출된 GitHub 이슈 #2445입니다: 0.1.45에서 작동하던 프록시가 0.5.4에서 효과를 멈췄고, 유일한 단서는 에이전트가 자신의 요약에서 DNS_PROBE_FINISHED_NXDOMAIN을 기쁘게 보고하는 것이었습니다. 이 실패 모드는 - 에이전트가 네트워크 오류를 웹사이트에 대한 사실처럼 설명하는 것 - 절반만 구성된 프록시의 시그니처입니다. 더 많은 토큰을 소모하기 전에 이 목록을 확인하세요:
- 에이전트가 받지 못한 세션에
proxy=를 전달했습니다. 하나의Browser를 생성하고 그 정확한 객체를 전달하며, 기본 세션이 뒤에서 생성되지 않도록 하세요. cdp_url을 설정했습니다. 이미 실행 중인 Chrome에 연결하면 프록시는 세션 구성에 속하지 않고 그 브라우저의 시작 플래그 (--proxy-server=...)에 속합니다 - 브라우저 사용은 이를 소급 적용할 수 없습니다.- 전역
HTTP_PROXY또는HTTPS_PROXY환경 변수가 세션 설정과 싸우고 있거나, 더 나쁘게는 조용히 LLM API 호출을 측정된 대역폭을 통해 라우팅하고 있습니다. - 프록시 자체가 죽었습니다. 에이전트 외부에서 먼저 테스트하세요 - 비용이 들지 않으며 검색 공간의 절반을 제외할 수 있습니다.
import requests
PROXY_URL = "http://USER:PASS@gate.quantumproxies.io:8000"
r = requests.get(
"https://api.ipify.org?format=json",
proxies={"http": PROXY_URL, "https": PROXY_URL},
timeout=20,
)
print(r.status_code, r.text) # must NOT be your own IP
외국 IP가 출력되면 자격 증명과 게이트웨이는 괜찮고 문제는 세션 연결에 있습니다. 자신의 주소나 407이 출력되면 먼저 그것을 수정하세요. 우리의 무료 IP 검사기는 다른 쪽에서 종료가 어떻게 보이는지 - ASN, 유형 및 평판 - 을 알려줍니다. 페이지가 로드되지만 모두 CAPTCHA일 때 두 번째로 확인할 사항입니다.

세션당 하나의 프록시, 그래서 병렬 에이전트가 종료 IP를 공유하지 않음
이것이 매개변수가 전역 구성에 있지 않고 세션에 있는 이유입니다. 하나의 공유 Browser를 통해 10개의 에이전트를 실행하면 타겟은 하나의 주소에서 10배의 트래픽을 보게 되며, 이는 주거용 IP를 소진시키는 가장 빠른 방법입니다. 대신 코루틴 내에서 세션을 구축하고 각 세션에 고유한 고정 세션 식별자를 부여하여 게이트웨이가 작업의 수명 동안 단일 종료에 고정되도록 하세요:
import asyncio, secrets
from browser_use import Agent, Browser
def session_proxy(sid: str, country: str = "us"):
return {
"server": "http://gate.quantumproxies.io:8000",
"username": f"USER-country-{country}-session-{sid}",
"password": "PASS",
}
async def run_task(task: str, country: str):
sid = secrets.token_hex(3) # e.g. a1b2c3
browser = Browser(
proxy=session_proxy(sid, country),
user_data_dir=None, # incognito: no shared cookies
allowed_domains=["*.example.com"], # keep the agent on target
)
agent = Agent(task=task, llm=llm, browser_session=browser)
return await agent.run()
async def main():
await asyncio.gather(
run_task("Find the price of SKU-1", "us"),
run_task("Find the price of SKU-1", "de"),
run_task("Find the price of SKU-1", "gb"),
)
asyncio.run(main())
세 가지 플래그가 실제로 작동하고 있습니다. user_data_dir=None은 시크릿 모드로 실행되어 에이전트가 서로의 쿠키를 상속받고 두 개의 신원을 하나의 프로필로 조용히 병합할 수 없습니다. allowed_domains는 탐색을 패턴 목록으로 제한합니다 - example.*와 같은 TLD 위치의 와일드카드는 의도적으로 거부되며, 100개 이상의 항목이 있는 목록은 패턴 매칭이 꺼진 상태로 집합으로 최적화됩니다. 그리고 사용자 이름의 세션 식별자가 종료 IP를 안정적으로 만듭니다; 국가와 세션에 대한 정확한 플래그 이름은 대시보드에 있지만, 모양은 어디서나 동일합니다.
작업당 종료 국가 선택
쇼핑, 가격 비교 또는 가용성 확인을 하는 에이전트는 잘못된 국가에서 탐색하면 기본적으로 잘못된 것입니다. 프록시는 세션당이므로 국가는 작업당 인수입니다 - country-us를 country-de로 바꾸면 동일한 작업이 독일 가격을 반환합니다. 풀에서 200개 이상의 국가 중에서 선택하고 나머지 브라우저를 이에 맞게 일관되게 유지하세요: 일치하는 언어를 args를 통해 전달하세요 (Chromium은 --lang=de-DE를 수락합니다) 미국 영어로 페이지를 요청하는 독일 종료 IP를 허용하지 마세요. 모바일 전용 표면과 가장 신뢰할 수 있는 종료를 위해, 모바일 IP는 다시 다르게 작동합니다, 왜냐하면 캐리어 NAT는 수천 명의 실제 사용자를 동일한 주소 뒤에 놓기 때문입니다.

작업 중간에 IP가 회전할 때 무슨 일이 일어나는가
에이전트는 스크래퍼와 다르게 느립니다. 각 작업 후 기본 0.5초 일시정지, 최소 0.25초 페이지 상태 대기 및 0.5초 네트워크 유휴 대기 사이에, 브라우저 사용은 모델이 아무 말도 하기 전에 단계당 1초 이상을 소비합니다 - 모델 왕복은 보통 몇 초 더 걸립니다. 따라서 15단계 작업은 벽 시계로 1~2분 동안 실행됩니다. 요청당 종료 IP가 회전하면 사이트는 각 단계에서 다른 주소를 보게 됩니다: 로그인은 끊기고, 장바구니는 비워지며, 에이전트는 결제 버튼이 사라졌다고 보고합니다.
해결책은 최악의 작업 지속 시간보다 여유 있게 초과하는 고정 세션입니다, 평균이 아닌. 몇 번의 실제 실행을 시간 측정하고 가장 느린 것을 선택하고 여유를 추가하세요 - 에이전트는 재시도하며, 재시도는 시계를 두 배로 늘립니다. 작업이 진정으로 어떤 고정 창보다 오래 지속되어야 한다면, 이를 분할하세요: 로그인하고 상태를 내보낸 다음 storage_state를 통해 저장한 쿠키로 새 세션에서 다시 시작하세요. 요청당 회전과 고정 중에서 선택해야 한다면, 우리의 AI 에이전트를 위한 인프라 체크리스트는 이 결정 주위의 나머지 레이어를 다룹니다.
프록시를 LLM 호출에서 유지하세요
이것은 실제 비용이 들며 거의 아무도 이를 잡지 못합니다. 환경 변수로 HTTPS_PROXY를 설정하여 프록시를 "어디에나 적용"하게 만들면 모든 모델 API 호출이 주거용 게이트웨이를 통해 라우팅됩니다 - 프롬프트와 응답, 모든 단계에서, 우회로를 통해 가는 특권에 대해 기가바이트당 청구됩니다. 프록시는 Browser에만 구성하고 프로세스 환경은 그대로 두세요. 바이트를 세면서, 브라우저 사용은 기본적으로 enable_default_extensions를 통해 uBlock Origin을 로드한다는 점을 유념하세요: 이를 켜 두세요, 왜냐하면 그것이 차단하는 모든 광고 요청은 당신이 지불하지 않아도 되는 것입니다. 전체 산술은 우리의 AI 에이전트의 대역폭 비용 분석에 있으며, 전통적인 스크래핑 버전의 절충은 헤드리스 브라우저 대 HTTP 요청에 있습니다.
자주 묻는 질문
브라우저 사용에서 프록시를 어떻게 설정하나요?
Browser (또한 BrowserSession으로 내보내짐)를 생성할 때 proxy=를 전달한 다음 그 객체를 Agent에 전달하세요. 값은 명시적인 http:// 스킴을 가진 server, username, password 및 선택적인 bypass 목록을 포함합니다. 에이전트 수준의 프록시 설정은 없습니다 - 세션에 속합니다.
왜 내 브라우저 사용 프록시 구성이 작동하지 않나요?
가능성 순서대로: 에이전트가 구성한 세션과 다른 세션에서 실행 중입니다, server에 스킴이 없습니다, cdp_url을 설정하여 브라우저가 프록시 플래그 없이 다른 곳에서 시작되었습니다, 또는 전역 프록시 환경 변수가 당신을 무시하고 있습니다. 먼저 일반 HTTP 클라이언트로 프록시를 확인하세요 - 에이전트 로그 내의 DNS 오류는 보통 프록시가 전혀 연결되지 않았음을 의미합니다.
각 브라우저 사용 에이전트가 다른 IP를 사용할 수 있나요?
네, 그리고 그렇게 해야 합니다. 각 작업 코루틴 내에서 고유한 프록시 자격 증명을 가진 Browser를 생성하여 하나의 인스턴스를 공유하지 마세요. 게이트웨이 사용자 이름에 고유한 세션 식별자를 추가하면 각 에이전트가 실행 기간 동안 고유한 종료에 고정됩니다, 그래서 10개의 병렬 에이전트가 10명의 사용자처럼 보이지 않고 한 명의 매우 바쁜 사용자처럼 보입니다.
어떤 프록시 유형이 브라우저 사용 에이전트에 가장 적합한가요?
각 작업이 독립적인 연구 및 가격 확인에는 회전 주거용, 로그인이나 장바구니가 있는 경우에는 고정 주거용, 타겟이 적대적이거나 모바일 전용인 경우에는 모바일을 사용하세요. 데이터센터 IP는 내부 타겟 및 보호되지 않은 페이지에 적합하며, 기가바이트당 훨씬 저렴합니다 - 이는 중요합니다, 왜냐하면 브라우저 에이전트는 많은 기가바이트를 이동하기 때문입니다.
프록시가 브라우저 사용이 감지되는 것을 막나요?
아니요. 프록시는 IP 계층만 수정합니다; 자동화된 Chromium의 지문은 별도의 문제이며, 밀리초 단위로 클릭하는 에이전트의 행동도 마찬가지입니다. 신뢰할 수 있는 주거용 종료는 가장 쉬운 신호를 제거하지만, 타겟이 심각한 봇 관리 시스템을 운영하는 경우 스텔스 지향 브라우저 빌드와 함께 사용하세요.
여기에는 이국적인 것이 없습니다: 프록시는 세션 속성이며, 이를 깨뜨리는 두 가지는 누락된 스킴과 전달하지 않은 세션입니다. 이를 올바르게 설정하고, 각 병렬 에이전트에 고유한 고정 종료를 제공하며, 게이트웨이를 모델 API 호출에서 멀리 두세요. 더 넓은 그림을 보려면 우리의 안티 디텍트 프레임워크 및 인증된 프록시 지도를 참조하세요.