SeleniumBase UC 모드 프록시 작동 안 함: 원인과 해결책
불만은 항상 동일합니다: UC 모드는 프록시 없이 Cloudflare를 우회하고, 프록시를 사용하면 실패하거나 IP가 절대 변경되지 않습니다. 두 증상 모두 구체적인 원인이 있으며, 이는 SeleniumBase 버그가 아닙니다.
seleniumbase uc mode proxy를 검색하면 동일한 세 페이지에 도달합니다: 세 가지 다른 프록시 서비스에서 IP가 변경되지 않는 Stack Overflow 질문, GitHub 이슈 seleniumbase/SeleniumBase#3046 ("UC 모드가 프록시와 함께 작동하지 않음", 2024년 8월에 버전 4.29.9에서 제출됨, 재현 불가로 닫힘), 그리고 유지 관리자의 답변이 두 문장인 토론 스레드: 인증이 필요한 프록시는 Chrome 확장이 필요하며, 단순히 나쁜 프록시일 수도 있습니다. 그 답변의 두 부분 모두 정확하며, 함께 거의 모든 실패를 설명합니다. 여기 긴 버전과 원인을 찾는 디버그 순서가 있습니다.
서로 동일해 보이는 두 가지 다른 실패
무엇을 변경하기 전에 어떤 문제가 있는지 파악하세요, 왜냐하면 해결책은 아무것도 공유하지 않기 때문입니다. 실패 A: 종료 IP가 절대 변경되지 않음. 스크립트가 실행되고, 페이지가 로드되며, 대상은 실제 주소를 봅니다 — 프록시는 경로에 없었습니다. 실패 B: 프록시가 작동하고 사이트가 차단함. UC 모드는 프록시 없이 Cloudflare를 통과하고, 프록시를 추가하는 순간 챌린지 루프에 빠집니다, 이는 이슈 #3046이 설명하는 바로 그것입니다. 실패 A는 배관 문제입니다. 실패 B는 IP 평판 문제입니다. 하나를 다른 것으로 취급하는 것이 이러한 스레드가 여러 페이지로 이어지는 이유입니다.
인증된 프록시가 확장을 필요로 하는 이유 — 그리고 그것이 UC 모드에서 중요한 이유
Chrome은 프록시 자격 증명을 제공할 명령줄 방법이 없습니다. --proxy-server 플래그는 포함된 user:pass@를 조용히 버리고, 결과 407 챌린지는 WebDriver가 건드릴 수 없는 네이티브 대화 상자로 나타납니다. 따라서 자격 증명이 포함된 프록시 문자열을 전달할 때, SeleniumBase는 즉석에서 작은 Chrome 확장을 생성하고, 임시 폴더에 작성하여 시작 시 로드하여 챌린지에 답할 수 있도록 합니다. 이것이 유지 관리자가 언급한 메커니즘이며, 우리의 Selenium에서 인증된 프록시 가이드에서 설명한 것과 동일한 것입니다.
UC 모드는 그 주위에 움직이는 부품을 추가합니다: 먼저 Chrome을 시작하고, 나중에 패치된 chromedriver를 연결하며, 스텔스 동작 중에 드라이버를 분리합니다. 확장은 그 모든 것이 일어나기 전에 로드되어야 하며, 그렇지 않으면 아무것도 예외를 발생시키지 않습니다 — Chrome은 직접 탐색하고, 실패 A를 얻게 됩니다. 일반적인 원인은 버전 드리프트입니다. Chrome 137은 확장 동작을 충분히 변경하여 SeleniumBase가 업데이트를 배포하기 전까지 프록시 인증을 깨뜨렸으므로, 오래된 고정된 버전과 최신 Chrome은 매번 조용히 실패합니다. 먼저 업그레이드하고, 두 번째로 디버그하세요.
실제로 작동하는 SeleniumBase UC 모드 프록시 형식
형식 오류는 "프록시 무시됨" 보고서의 놀라운 비율을 차지합니다. SeleniumBase는 프록시를 평문 문자열로 받으며, 자격 증명이 있든 없든, Driver 및 SB 관리자와 명령줄에서 모두 사용합니다:
from seleniumbase import Driver, SB
# Authenticated: SeleniumBase builds a proxy-auth extension for this
driver = Driver(uc=True, proxy="USER:PASS@gate.quantumproxies.io:PORT")
# IP-whitelisted: no credentials, no extension
with SB(uc=True, proxy="gate.quantumproxies.io:PORT") as sb:
sb.uc_open_with_reconnect("https://httpbin.org/ip", 4)
print(sb.get_text("body")) # must NOT be your own IP
# Same thing from pytest:
# pytest test_x.py --uc --proxy=USER:PASS@gate.quantumproxies.io:PORT
여기서 따르는 세 가지 규칙이 있습니다. 문자열을 http://와 자격 증명을 동시에 감싸지 마세요, 버전이 그것을 처리할 수 있는지 확인하지 않는 한 — USER:PASS@HOST:PORT가 문서화된 형식입니다. 자격 증명이 있는 SOCKS5가 전혀 작동할 것이라고 기대하지 마세요: 이는 Playwright SOCKS5 인증에서 다루는 것과 동일한 Chromium 제한이며, 이를 우회하는 프레임워크 패치는 없습니다. 그리고 비밀번호에 @나 :가 포함되어 있다면, 구문 분석기를 디버그하기보다는 알파벳 숫자로 회전하세요.
전체 실패 클래스를 제거하는 해결책
스크래퍼를 실행하는 기계가 안정적인 공용 IP를 가지고 있다면, 요청 대신 인증하세요. 주소를 제공자에게 등록하세요 — 모든 QuantumProxies 플랜은 사용자:비밀번호와 함께 IP 화이트리스트를 지원합니다 — 그런 다음 host:port를 전달하세요. 자격 증명이 없으면 확장이 필요 없습니다: Chrome 업데이트에서 깨지는 구성 요소가 하나 줄어들고, 눈에 띄지 않는 브라우저에 로드되는 파일이 하나 줄어듭니다. VPS에서는 이 게시물에서 가장 가치 있는 변경입니다.
제한은 기술적이 아닌 위상적입니다: 화이트리스트는 기계를 인증하므로, 자동 확장된 컨테이너, CI 실행자 및 회전하는 NAT 뒤에 있는 모든 것은 여전히 자격 증명이 필요합니다. 이러한 경우, 확장 경로를 유지하고 SeleniumBase를 최신 상태로 유지하세요.

UC 모드를 비난하기 전에 종료 IP를 확인하세요
이것은 0단계이며 대부분의 사람들이 건너뜁니다. 스텔스 설정을 건드리기 전에, 프록시를 통해 트래픽이 나가는 것을 증명하세요. 먼저 브라우저 외부에서 동일한 자격 증명을 테스트하세요 — curl이 그것을 사용할 수 없다면, 어떤 프레임워크도 사용할 수 없습니다:
# 1. Does the proxy work at all, outside any browser?
curl -x http://USER:PASS@gate.quantumproxies.io:PORT https://httpbin.org/ip
# 2. Is the toolchain current? (Chrome 137+ broke older extension handling)
pip install -U seleniumbase && sbase get chromedriver
# 3. Does the proxy work WITHOUT the stealth patches?
python -c "from seleniumbase import Driver; \
d=Driver(proxy='USER:PASS@gate.quantumproxies.io:PORT'); \
d.get('https://httpbin.org/ip'); \
print(d.find_element('tag name','body').text); d.quit()"
1단계가 실패하면 문제는 프록시나 자격 증명입니다. 1단계가 통과하고 3단계가 실패하면 문제는 확장이나 Chrome 버전입니다. 둘 다 통과하고 uc=True만 실패하면, 그때 — 그리고 그때만 — UC 모드 상호작용입니다. 실제로 얻은 종료를 아는 것은 종료를 얻었다는 것을 아는 것만큼 중요합니다: 우리의 무료 IP 품질 검사기는 주소, 유형 및 평판을 보고하며, 이는 "프록시가 작동한다"와 "프록시가 통과할 것이다"의 차이입니다.
프록시가 작동하고 Cloudflare가 여전히 이기는 경우
이것은 실패 B이며, 이는 아무것도 버그가 아닙니다. UC 모드는 브라우저를 인간처럼 보이게 만듭니다; 네트워크를 주거지처럼 보이게 만들 수는 없습니다. 이미 수백 개의 다른 스크래퍼가 소진한 데이터센터 서브넷을 통해 스텔스 브라우저를 라우팅하면, 몇 번을 클릭해도 절대 해결되지 않는 챌린지의 어려운 버전을 얻게 됩니다. 어떤 브라우저 프레임워크도 그것을 해결할 수 없습니다, 왜냐하면 평결은 지문이 읽히기 전에 내려지기 때문입니다. 우리의 Cloudflare 오류 1020 및 스크래핑 중 CAPTCHA 회피에 대한 메모는 모두 같은 곳에 도달합니다: CAPTCHA는 증상이고, IP 평판이 원인입니다.
결과를 바꾸는 세 가지가 있습니다. 주거지 IP로 이동하세요: 200개 이상의 국가에 걸친 실제 가정 주소는 데이터센터 범위가 가질 수 없는 평판을 가지고 있습니다. 로그인이나 장바구니가 있는 모든 것에 대해 끈적한 세션을 사용하세요, 중간에 회전하면 세션 하이재킹으로 읽히고, 넓은 상태 없는 크롤링을 위해 회전하는 종료를 사용하세요. 그리고 종료 국가를 에뮬레이트하는 로케일과 일치시키세요 — en-US 로케일과 뉴욕 시간대를 가진 독일 종료는 이상으로 점수화됩니다.
두 가지 환경 세부 사항이 루프를 닫습니다. UC 모드는 헤드리스 모드에서 감지 가능합니다, 따라서 Linux에서는 xvfb=True 가상 디스플레이를 사용하세요, headless=True 대신 — 이는 여러 "Windows에서 작동하고, Ubuntu에서는 충돌" 보고서가 디스플레이가 수정되면 해결되는 이유이며, uc_gui_click_captcha()와 같은 PyAutoGUI 기반 도우미가 무언가를 클릭하려면 디스플레이가 필요한 이유입니다. 그리고 인증 프록시와 함께 incognito=True를 양쪽으로 테스트하세요: 확장과 시크릿 모드는 취약한 쌍이며, 자격 증명은 확장에서 이동합니다.

디버그 체크리스트, 순서대로
- 종료 IP가 변경되었는지 확인하세요. IP 에코 엔드포인트를 로드하고 읽으세요. 이것이 통과하기 전까지는 아래의 모든 것이 무의미합니다.
- 브라우저 외부에서 프록시를 테스트하세요, curl이나 requests를 사용하여 동일한 자격 증명을 사용하세요.
- SeleniumBase와 드라이버를 업그레이드하세요. Chrome 137의 확장 변경은 이전 버전에서 프록시 인증을 깨뜨렸습니다.
- 일시적으로
uc=True를 삭제하세요. 프록시가 일반 모드에서 작동하면, 상호작용을 격리한 것입니다. - 박스에 고정된 주소가 있으면 IP 화이트리스트로 전환하세요 — 이는 확장을 그림에서 완전히 제거합니다.
- Linux에서는 xvfb를 사용하고, headless는 사용하지 마세요; UC 모드는 헤드리스에서 감지 가능하며 CAPTCHA 도우미는 디스플레이가 필요합니다.
- 이제 스텔스 설정을 변경하세요: 시크릿 모드를 전환하고,
reconnect_time을 올리고, 그런 다음 프록시 유형을 변경하세요.
plain UC 모드의 문서화된 후속작인 CDP 모드는 이 중 아무것도 변경하지 않습니다: 프록시 제약은 Chrome에서 비롯되며, 프레임워크가 아니므로 동일한 체크리스트가 적용됩니다. 인증된 프록시를 지원하는 교차 프레임워크 뷰를 위해, 우리의 안티 디텍트 프레임워크 프록시 맵이 나란히 설명합니다.
자주 묻는 질문
SeleniumBase UC 모드에서 내 IP가 변경되지 않는 이유는 무엇인가요?
거의 항상 프록시 인증 확장이 로드되지 않았기 때문입니다, 그래서 Chrome이 직접 탐색했습니다. 그럴 때 오류가 발생하지 않습니다. SeleniumBase를 업그레이드하고, 프록시 문자열이 USER:PASS@HOST:PORT인지 확인하고, 동일한 자격 증명을 curl로 테스트하세요. 기계가 안정적인 공용 IP를 가지고 있다면, 그것을 화이트리스트에 추가하고 자격 증명을 완전히 제거하세요.
UC 모드가 프록시 없이 Cloudflare를 우회하지만 프록시와 함께는 왜 안 되나요?
자신의 연결은 깨끗한 평판을 가지고 있고 프록시 종료는 그렇지 않기 때문입니다. 공유 데이터센터 범위는 심하게 플래그가 지정되어 있으며, 플래그가 지정된 IP는 자동화로 해결할 수 없는 어려운 챌린지를 받습니다. 작업을 주거지나 모바일 종료로 이동하고, 스텔스 설정을 변경하기 전에 다시 테스트하세요 — 브라우저는 결코 문제가 아니었습니다.
SeleniumBase UC 모드는 SOCKS5 프록시와 함께 작동하나요?
자격 증명 없이, 예. 자격 증명과 함께, 아니요 — Chromium은 SOCKS5 사용자 이름/비밀번호 인증을 구현한 적이 없으므로, Selenium 계열 프레임워크는 추가할 수 없습니다. 동일한 게이트웨이의 HTTP 엔드포인트를 자격 증명과 함께 사용하거나, IP를 화이트리스트에 추가하고 SOCKS5 엔드포인트를 인증 없이 유지하세요.
프록시를 사용하여 헤드리스 모드에서 UC 모드를 실행할 수 있나요?
할 수 있지만, 하지 말아야 합니다. UC 모드는 헤드리스 모드에서 감지 가능하며, CAPTCHA 도우미 메서드는 PyAutoGUI를 통해 마우스를 구동하므로 실제 디스플레이가 필요합니다. Linux 서버에서는 가상 디스플레이를 위해 xvfb=True를 사용하세요; 유지 관리된 예제들이 목표로 하는 조합입니다.
SeleniumBase에서 프록시 회전을 어떻게 사용하나요?
리스트를 관리하는 대신 회전 게이트웨이를 가리키세요: 각 새로운 연결은 풀에서 다른 종료를 얻으며, 코드 변경이 필요 없습니다. 여러 페이지에 걸쳐 하나의 아이덴티티를 유지해야 하는 흐름의 경우, 사용자 이름 매개변수에서 끈적한 세션을 요청하여 세션 창 동안 종료가 유지되도록 하고, 아이덴티티당 새 드라이버를 시작하세요.
UC 모드는 프록시와 싸우고 있는 것이 아닙니다. 이는 Chrome이 자동화를 위해 설계하지 않은 자격 증명 메커니즘 위에 스텔스 시작 시퀀스를 쌓고, 소진된 IP가 작업을 마무리합니다. 화이트리스트를 통해 확장을 제거하고, 다른 것을 건드리기 전에 종료를 확인하며, 이미 소진되지 않은 IP를 브라우저에 제공하세요.