Post

셀레니움에 VPN 크롬 확장을 올려 우회 IP를 확인해보자

받아둔 VPN 확장을 셀레니움에 올려 국가를 고르고 api.ip.pe.kr로 출구 IP가 바뀌는지 확인해보자

셀레니움에 VPN 크롬 확장을 올려 우회 IP를 확인해보자

셀레니움에 VPN 크롬 확장을 올려 우회 IP를 확인해보자

앞 글에서 받아둔 VPN 확장을 셀레니움에 올려, 국가를 고르고 api.ip.pe.kr로 출구 IP가 바뀌는지 확인해보자.

1. 서론 (Introduction)

  • 문제/상황 (Problem):
    • 지역 제한이 걸린 페이지를 자동화로 다루려면 출구 IP를 바꿔야 하는데, 매번 손으로 VPN을 켜고 국가를 고르기 번거롭다.
  • 목적 (Purpose):
    • 앞 글에서 다운로드한 VPN 확장을 셀레니움에 올려 국가 선택·연결까지 코드로 처리하고, 출구 IP가 실제로 바뀌었는지 검증한다.
  • 대상 (Target Audience):
    • 지역별 응답을 자동으로 수집·검증해야 하는 개발자

2. 방법 및 과정 (Methods & Process)

  • 배경 조사 및 데이터 (Data Collection):
    • 셀레니움에 확장을 올리는 방법은 두 가지다.
방법설명
--load-extension압축 해제 폴더를 플래그로 전달
.add_extension()CRX 파일 경로를 옵션에 추가. 내부적으로 압축 해제 후 로드
  • 접근 방법 (Approach Methods):
    • [방법 1]: --load-extension — 압축 해제한 폴더를 --load-extension=<경로>로 전달. chromedriver는 실행 중인 Chrome 버전과 일치해야 한다.
    • [방법 2]: add_extension.crx 파일을 options.add_extension(path)로 전달. 내부 동작은 방법 1과 동일하다.
  • 분석 및 해결 프로세스 (Analysis Flow):
    • 도구/기술: Python, selenium, webdriver-manager, pyvirtualdisplay, chrome_ext_downloader
    • 주요 단계:
      1. download() → CRX 다운로드 + 압축 해제 + update_url 제거
      2. ChromeOptions--load-extension=<압축해제경로> 추가
      3. chrome://extensions shadow DOM에서 확장 런타임 ID 조회
      4. 팝업 열기 → 스플래시 숨김 대기 → 온보딩 4단계 건너뛰기
      5. 지역 목록 열기 → 검색 필드 국가 입력 → 국가·지역 클릭 → 연결
      6. api.ip.pe.kr로 연결 전후 IP 비교
    • 온보딩 4단계 (v4.x): .free-step__btn.premium-step__btn.pricing-step__action--free.trial-modal__close
    • 국가 목록 선택자 (v4.x):
v3.xv4.x역할
.location-country.simple-location단일 지역 국가 행
.location-country__header.simple-location__country-name국가명 텍스트
.location-country--blocked.simple-location__crown프리미엄 잠금 표시
(없음).multi-region-location__country복수 지역 국가 행
(없음).search-input__input검색 필터 입력
1
- **결과 도출 및 검증:** `api.ip.pe.kr` IP가 한국 주소에서 영국 주소로 바뀌는 것을 확인했다.

3. 결과 (Results)

  • 분석 결과 요약:
    • --load-extension으로 확장을 로드해 국가 선택·연결·IP 검증 전 과정을 코드로 처리했다.
    • v4.x에서 온보딩이 4단계로 늘었다. 순서를 틀리거나 한 단계라도 빠지면 메인 화면에 도달하지 못해 지역 목록이 열리지 않는다.
    • chrome://extensions의 shadow DOM 조회로 런타임 ID를 읽으면 확장 로드 여부와 ID를 런타임에 확인할 수 있다.

4. 인사이트 및 액션 (Insights & Action)

  • 인사이트 (Insight):
    • 확장 팝업 선택자는 버전마다 바뀐다. 압축 해제 폴더의 CSS/JS 파일을 직접 분석하는 것이 가장 빠른 선택자 확인 방법이다.
    • 온보딩 단계가 몇 번인지는 확장 업데이트마다 달라진다. 각 단계를 건너뛰지 않으면 자동화가 메인 화면에 도달하지 못하고 조용히 실패한다.
    • extensions.ui.developer_mode: true prefs 옵션과 --disable-extensions-file-access-check 플래그를 함께 쓰면 확장 로드 안정성이 높아진다.
  • 실행 방안 (Action Plan):
    • chromedriver는 Chrome 버전에 정확히 맞아야 한다. webdriver-manager의 자동 다운로드를 쓰거나 버전 고정 번들을 프로젝트에 포함시킨다.
  • 한 줄 결론 (Key Takeaway):
    • --load-extension으로 VPN 확장을 로드하고 v4.x 온보딩 4단계 선택자를 순서대로 클릭하면 국가 선택·IP 검증을 코드로 처리할 수 있다. 샘플 코드
  • 다음 스텝 (Next Step):
    • 확장 UI가 바뀌면 자동화가 조용히 실패한다. 다음엔 확장을 안전하게 관리해 화면이 바뀌면 에러로 드러나게 해보자.

연구·학습 목적. 이 글은 기법의 동작 원리를 정리한 것이다. 특정 서비스의 이용약관을 우회하거나 타인의 자원에 무단 접근하는 데 쓰지 않는다. 적용 전에 대상의 이용약관과 robots.txt를 확인한다.

This post is licensed under CC BY 4.0 by the author.