# 브라우저 사용 프록시 구성: 세션별 종료 IP

브라우저 사용 프록시를 검색하면 Google은 Chrome 설정 대화 상자를 제공합니다. 이것이 다른 점입니다: 인증된 주거용 IP를 통해 브라우저 사용 AI 에이전트 라이브러리를 라우팅하는 것, 에이전트당 하나씩.

**브라우저 사용 프록시**를 검색하면 Google은 Chrome의 설정 대화 상자, `chrome.proxy` 확장 API 및 기업 PAC 파일 튜토리얼을 제공합니다. 그것들은 당신이 찾고 있던 것이 아닙니다. 당신은 [브라우저 사용](https://github.com/browser-use/browser-use) - 108k GitHub 스타를 가진 Python 라이브러리로 LLM이 실제 브라우저를 구동할 수 있게 하는 - 를 인증된 프록시를 통해 라우팅하고 싶습니다, 그래서 에이전트가 사무실 IP에서 타겟을 두드리지 않도록. 이것이 그 가이드입니다: 매개변수가 실제로 어디에 있는지, 업그레이드 후 조용히 작동을 멈추는 이유, 각 병렬 에이전트에 고유한 종료 IP를 제공하는 방법, IP가 그 아래에서 이동할 때 긴 작업에 무슨 일이 일어나는지.

## 브라우저 사용 프록시 매개변수가 실제로 있는 곳

프록시는 *브라우저 세션*의 속성이지 에이전트의 속성이 아닙니다. 현재 라이브러리에서는 `Browser`가 `BrowserSession`의 별칭이며, 문서에서는 이들이 정확히 동일한 클래스라고 명시되어 있습니다. 따라서 하나의 이름을 사용하는 모든 튜토리얼은 다른 이름에도 적용됩니다. 매개변수는 `proxy`이며, 문서에서는 이를 `ProxySettings`로 네 가지 필드: `server`, `bypass`, `username`, `password`로 타입합니다. 대부분의 사람들이 전달하는 것처럼 동등한 dict도 작동합니다:

```python
import asyncio
from browser_use import Agent, Browser
# llm = ...  your model of choice; see the browser-use docs for the import

PROXY = {
    "server": "http://residentialpremium.quantumproxies.io:8080",  # 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`에는 스킴이 필요합니다. `residentialpremium.quantumproxies.io:8080`은 프록시 URL이 아닙니다; `http://residentialpremium.quantumproxies.io:8080`가 맞습니다. 자격 증명이 문제가 되는 경우, [서버의 IP를 화이트리스트에 추가](https://quantumproxies.io/residential-proxies)하면 사용자:비밀번호를 완전히 제거합니다 - 게이트웨이는 호출자를 인식하고 브라우저는 407을 보지 않습니다.

## 브라우저 사용 프록시 구성이 조용히 아무것도 하지 않는 이유

이 주제에 대한 가장 많이 방문한 페이지는 2025년 7월에 제출된 GitHub 이슈 #2445입니다: 0.1.45에서 작동하던 프록시가 0.5.4에서 효과를 멈췄고, 유일한 단서는 에이전트가 자신의 요약에서 `DNS_PROBE_FINISHED_NXDOMAIN`을 기쁘게 보고하는 것이었습니다. 이 실패 모드는 - 에이전트가 네트워크 오류를 웹사이트에 대한 사실처럼 설명하는 것 - 절반만 구성된 프록시의 시그니처입니다. 더 많은 토큰을 소모하기 전에 이 목록을 확인하세요:

1. 에이전트가 받지 못한 세션에 `proxy=`를 전달했습니다. 하나의 `Browser`를 생성하고 그 정확한 객체를 전달하며, 기본 세션이 뒤에서 생성되지 않도록 하세요.
2. `cdp_url`을 설정했습니다. 이미 실행 중인 Chrome에 연결하면 프록시는 세션 구성에 속하지 않고 그 브라우저의 시작 플래그 (`--proxy-server=...`)에 속합니다 - 브라우저 사용은 이를 소급 적용할 수 없습니다.
3. 전역 `HTTP_PROXY` 또는 `HTTPS_PROXY` 환경 변수가 세션 설정과 싸우고 있거나, 더 나쁘게는 조용히 LLM API 호출을 측정된 대역폭을 통해 라우팅하고 있습니다.
4. 프록시 자체가 죽었습니다. 에이전트 외부에서 먼저 테스트하세요 - 비용이 들지 않으며 검색 공간의 절반을 제외할 수 있습니다.

```python
import requests

PROXY_URL = "http://USER:PASS@residentialpremium.quantumproxies.io:8080"
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 검사기](https://quantumproxies.io/ip-checker)는 다른 쪽에서 종료가 어떻게 보이는지 - ASN, 유형 및 평판 - 을 알려줍니다. 페이지가 로드되지만 모두 CAPTCHA일 때 두 번째로 확인할 사항입니다.

![IP를 알려달라는 요청을 받은 browser-use 에이전트가 DNS_PROBE_FINISHED_NXDOMAIN을 마치 사이트에 관한 사실인 것처럼 서술하는데, 이는 프록시가 절반만 설정되었다는 신호입니다. 카드는 증상과 해결책을 연결합니다: DNS 오류, 내 IP가 그대로 보이는 경우, 0.1.45에서는 작동하던 설정, 또는 세션과 충돌하는 전역 HTTPS_PROXY 변수.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785776552/blog/generated/qp-b10-005-diag1.png)
*구성은 보통 올바르게 보입니다. 실패는 거의 항상 에이전트가 실제로 받은 세션, 누락된 스킴 또는 전역 환경 변수입니다.*

## 세션당 하나의 프록시, 그래서 병렬 에이전트가 종료 IP를 공유하지 않음

이것이 매개변수가 전역 구성에 있지 않고 세션에 있는 이유입니다. 하나의 공유 `Browser`를 통해 10개의 에이전트를 실행하면 타겟은 하나의 주소에서 10배의 트래픽을 보게 되며, 이는 주거용 IP를 소진시키는 가장 빠른 방법입니다. 대신 코루틴 내에서 세션을 구축하고 각 세션에 고유한 고정 세션 식별자를 부여하여 게이트웨이가 작업의 수명 동안 단일 종료에 고정되도록 하세요:

```python
import asyncio, secrets
from browser_use import Agent, Browser

def session_proxy(sid: str, country: str = "us"):
    return {
        "server": "http://residentialpremium.quantumproxies.io:8080",
        "username": f"USER-country-{country}-sid-{sid}-ttl-30m",
        "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](https://quantumproxies.io/mobile-proxies)는 다시 다르게 작동합니다, 왜냐하면 캐리어 NAT는 수천 명의 실제 사용자를 동일한 주소 뒤에 놓기 때문입니다.

[각 에이전트에 고유한 주거용 종료 IP 제공](https://quantumproxies.io/residential-proxies)

![각자의 작업 안에서 별도의 Browser와 사용자 이름에 담긴 고정 프록시 세션으로 만들어진 세 개의 browser-use 에이전트가 미국, 독일, 영국의 서로 다른 주거용 출구에서 같은 대상에 접속합니다. 카드에는 규칙이 나열되어 있습니다: 에이전트당 Browser 하나, Browser당 고정 세션 하나, 쿠키 공유 금지.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785776552/blog/generated/qp-b10-005-diag2.png)
*작업 외부가 아닌 작업 내부에서 세션을 구축하세요. 에이전트당 하나의 Browser, Browser당 하나의 고정 세션, 신원당 하나의 IP.*

## 작업 중간에 IP가 회전할 때 무슨 일이 일어나는가

에이전트는 스크래퍼와 다르게 느립니다. 각 작업 후 기본 0.5초 일시정지, 최소 0.25초 페이지 상태 대기 및 0.5초 네트워크 유휴 대기 사이에, 브라우저 사용은 모델이 아무 말도 하기 전에 단계당 1초 이상을 소비합니다 - 모델 왕복은 보통 몇 초 더 걸립니다. 따라서 15단계 작업은 벽 시계로 1~2분 동안 실행됩니다. 요청당 종료 IP가 회전하면 사이트는 각 단계에서 다른 주소를 보게 됩니다: 로그인은 끊기고, 장바구니는 비워지며, 에이전트는 결제 버튼이 사라졌다고 보고합니다.

해결책은 최악의 작업 지속 시간보다 여유 있게 초과하는 고정 세션입니다, 평균이 아닌. 몇 번의 실제 실행을 시간 측정하고 가장 느린 것을 선택하고 여유를 추가하세요 - 에이전트는 재시도하며, 재시도는 시계를 두 배로 늘립니다. 작업이 진정으로 어떤 고정 창보다 오래 지속되어야 한다면, 이를 분할하세요: 로그인하고 상태를 내보낸 다음 `storage_state`를 통해 저장한 쿠키로 새 세션에서 다시 시작하세요. 요청당 회전과 고정 중에서 선택해야 한다면, 우리의 [AI 에이전트를 위한 인프라 체크리스트](https://quantumproxies.io/blog/web-infrastructure-ai-agents)는 이 결정 주위의 나머지 레이어를 다룹니다.

## 프록시를 LLM 호출에서 유지하세요

이것은 실제 비용이 들며 거의 아무도 이를 잡지 못합니다. 환경 변수로 `HTTPS_PROXY`를 설정하여 프록시를 "어디에나 적용"하게 만들면 모든 모델 API 호출이 주거용 게이트웨이를 통해 라우팅됩니다 - 프롬프트와 응답, 모든 단계에서, 우회로를 통해 가는 특권에 대해 기가바이트당 청구됩니다. 프록시는 `Browser`에만 구성하고 프로세스 환경은 그대로 두세요. 바이트를 세면서, 브라우저 사용은 기본적으로 `enable_default_extensions`를 통해 uBlock Origin을 로드한다는 점을 유념하세요: 이를 켜 두세요, 왜냐하면 그것이 차단하는 모든 광고 요청은 당신이 지불하지 않아도 되는 것입니다. 전체 산술은 우리의 [AI 에이전트의 대역폭 비용](https://quantumproxies.io/blog/ai-agent-bandwidth-cost-proxies) 분석에 있으며, 전통적인 스크래핑 버전의 절충은 [헤드리스 브라우저 대 HTTP 요청](https://quantumproxies.io/blog/headless-browser-vs-http-requests-cost)에 있습니다.

## 자주 묻는 질문

### 브라우저 사용에서 프록시를 어떻게 설정하나요?

`Browser` (또한 `BrowserSession`으로 내보내짐)를 생성할 때 `proxy=`를 전달한 다음 그 객체를 `Agent`에 전달하세요. 값은 명시적인 `http://` 스킴을 가진 `server`, `username`, `password` 및 선택적인 `bypass` 목록을 포함합니다. 에이전트 수준의 프록시 설정은 없습니다 - 세션에 속합니다.

### 왜 내 브라우저 사용 프록시 구성이 작동하지 않나요?

가능성 순서대로: 에이전트가 구성한 세션과 다른 세션에서 실행 중입니다, `server`에 스킴이 없습니다, `cdp_url`을 설정하여 브라우저가 프록시 플래그 없이 다른 곳에서 시작되었습니다, 또는 전역 프록시 환경 변수가 당신을 무시하고 있습니다. 먼저 일반 HTTP 클라이언트로 프록시를 확인하세요 - 에이전트 로그 내의 DNS 오류는 보통 프록시가 전혀 연결되지 않았음을 의미합니다.

### 각 브라우저 사용 에이전트가 다른 IP를 사용할 수 있나요?

네, 그리고 그렇게 해야 합니다. 각 작업 코루틴 내에서 고유한 프록시 자격 증명을 가진 `Browser`를 생성하여 하나의 인스턴스를 공유하지 마세요. 게이트웨이 사용자 이름에 고유한 세션 식별자를 추가하면 각 에이전트가 실행 기간 동안 고유한 종료에 고정됩니다, 그래서 10개의 병렬 에이전트가 10명의 사용자처럼 보이지 않고 한 명의 매우 바쁜 사용자처럼 보입니다.

### 어떤 프록시 유형이 브라우저 사용 에이전트에 가장 적합한가요?

각 작업이 독립적인 연구 및 가격 확인에는 회전 주거용, 로그인이나 장바구니가 있는 경우에는 고정 주거용, 타겟이 적대적이거나 모바일 전용인 경우에는 모바일을 사용하세요. 데이터센터 IP는 내부 타겟 및 보호되지 않은 페이지에 적합하며, 기가바이트당 훨씬 저렴합니다 - 이는 중요합니다, 왜냐하면 브라우저 에이전트는 많은 기가바이트를 이동하기 때문입니다.

### 프록시가 브라우저 사용이 감지되는 것을 막나요?

아니요. 프록시는 IP 계층만 수정합니다; 자동화된 Chromium의 지문은 별도의 문제이며, 밀리초 단위로 클릭하는 에이전트의 행동도 마찬가지입니다. 신뢰할 수 있는 주거용 종료는 가장 쉬운 신호를 제거하지만, 타겟이 심각한 봇 관리 시스템을 운영하는 경우 스텔스 지향 브라우저 빌드와 함께 사용하세요.

여기에는 이국적인 것이 없습니다: 프록시는 세션 속성이며, 이를 깨뜨리는 두 가지는 누락된 스킴과 전달하지 않은 세션입니다. 이를 올바르게 설정하고, 각 병렬 에이전트에 고유한 고정 종료를 제공하며, 게이트웨이를 모델 API 호출에서 멀리 두세요. 더 넓은 그림을 보려면 우리의 [안티 디텍트 프레임워크 및 인증된 프록시 지도](https://quantumproxies.io/blog/anti-detect-frameworks-authenticated-proxies-map)를 참조하세요.

[90M+ 주거용 IP를 200개 이상의 국가에서 브라우저 사용으로 실행](https://quantumproxies.io/residential-proxies)
