In this Article
Selenium만으로도 웹 자동화에 훌륭하지만, 프록시와 함께 사용하면 개인정보를 보호하고 안정적인 연결을 보장하며 중단 없이 콘텐츠를 이용할 수 있습니다. 쉽게 말해, Jason Huggins가 개발한 오픈 소스 도구로 웹 애플리케이션을 자동화하거나 테스트하는 데 사용됩니다. Selenium IDE, Grid, Standalone Server, WebDriver 같은 모듈을 포함합니다.
이 가이드에서는 웹 스크래핑 작업을 위해 Python에서 Selenium에 프록시를 설정하는 핵심 단계를 안내합니다.
시작하기
먼저 Python과 pip(Python 패키지 관리자)가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 공식 사이트에서 Python을 다운로드하고, 내려받은 .pkg 파일을 열어 안내에 따릅니다. 기본 단계를 살펴보겠습니다.
1. Terminal 또는 Command Prompt를 엽니다. Mac을 사용한다면 Dock에서 Launchpad 아이콘을 클릭하고 검색 필드에 Terminal을 입력한 뒤 Terminal을 클릭합니다. Windows를 사용한다면 실행 창에 cmd를 입력합니다. 이 바로 가기를 사용하면 Command Prompt 또는 PowerShell 터미널이 열립니다.
2. 터미널에 다음을 입력합니다.
python --version
버전이 Python 3이라면 Python 뒤에 3을 붙이면 됩니다. 다른 명령에도 적용될 수 있습니다.
python3 --version
pip은 일반적으로 Python 3.4+와 함께 자동으로 설치됩니다. 하지만 pip이 설치되었는지 다음을 입력해 확인하는 편이 좋습니다.
pip --version
pip3 --version
3. pip을 사용해로 Selenium 패키지를 설치합니다.
pip install selenium
Python 3을 사용한다면 pip3를 사용해 Python 3용으로 설치되었는지 확인합니다.
pip3 install selenium
4. 설치가 완료되었는지 확인합니다.
설치 후 다음을 실행하여 Selenium이 설치되었는지 확인할 수 있습니다.
pip show selenium
Selenium용 웹 드라이버 사용
Selenium은 Chrome, Firefox 등의 브라우저와 상호작용하려면 웹 드라이버가 필요합니다. 적절한 드라이버를 다운로드하고 시스템의 PATH에서 사용할 수 있도록 해야 합니다. 대부분의 자동화 프로젝트에서 주로 사용하는 브라우저인 Chrome으로 진행하겠습니다.
1. 공식 ChromeDriver 다운로드 페이지로 이동합니다.
https://developer.chrome.com/docs/chromedriver/downloads
2. 사용 중인 Chrome 버전에 맞는 링크를 찾아 macOS용 ChromeDriver를 다운로드합니다.
다운로드한 파일은 zip. 형식입니다. 더블 클릭하여 압축을 풀면 chromedriver 실행 파일을 얻을 수 있습니다.
쉽게 접근할 수 있도록 chromedriver 파일을 시스템 PATH에 포함된 디렉터리로 옮겨야 합니다. 일반적인 디렉터리로는 /usr/local/bin 또는 /usr/bin 등이 있습니다. 다음 명령을 사용합니다.
sudo mv ~/Downloads/chromedriver /usr/local/bin/
***”파일 또는 디렉터리가 없습니다” 오류가 표시되면 일반적으로 명령의 파일 경로가 잘못되었거나 지정한 위치에 파일이 없다는 뜻입니다. chromedriver 파일이 있는 디렉터리에 있는지, 파일 이름에 확장자나 오타가 없는지 다시 확인합니다.
mv 명령을 sudo와 함께 사용하여 파일을 /usr/local/bin 같은 디렉터리로 옮기면 macOS에서 비밀번호를 입력하라고 요청합니다. 이는 사용자 계정 비밀번호입니다. 입력한 후 Enter를 누릅니다. 입력하는 동안 화면에는 비밀번호가 표시되지 않습니다. 문자나 기호가 나타나지 않습니다.
ChromeDriver가 올바르게 설치되었는지 확인하려면 터미널에 다음 명령을 입력합니다.
chromedriver --version/
기본 Python 스크립트 만들기
다음으로 텍스트 편집기(여기서는 VS Code)를 다운로드하거나 IDE를 사용해 selenium_test.py 파일을 새로 만듭니다.
기본 Python 스크립트를 만들려면 webdriver-manager 모듈을 설치해야 합니다.
- 이 패키지는 pip를 사용하여 설치할 수 있습니다. 터미널에서 다음 명령을 실행합니다.
pip install webdriver-manager/
pip install selenium webdriver-manager/
위 명령을 실행하면 스크립트가 예상대로 작동해야 합니다.
# pip install selenium webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
# set Chrome options to run in headless mode
options = Options()
options.add_argument("--headless=new")
# initialize Chrome driver
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
# navigate to the target webpage
driver.get("https://httpbin.io/ip")
# print the HTML of the target webpage
print(driver.page_source)
# release the resources and close the browser
driver.quit()/
다음 결과가 표시됩니다.
Selenium에서 무료 프록시 설정하기
이 부분에서는 Python을 사용해 Selenium 프록시를 설정하고 무료 프록시를 사용해 보는 방법을 알아봅니다. 이 웹사이트 https://free-proxy-list.net/를 방문하여 테스트에 사용할 무료 프록시를 선택합니다. 스크립트에서 프록시 주소와 포트를 정의해야 합니다. 예를 들어 다음 무료 프록시를 선택하겠습니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# define the proxy address and port
proxy = "194.5.25.34:443"
# set Chrome options to run in headless mode using a proxy
options = Options()
options.add_argument("--headless=new")
options.add_argument(f"--proxy-server={proxy}")
# initialize Chrome driver
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
# navigate to the target webpage
driver.get("https://httpbin.io/ip")
# print the body content of the target webpage
print(driver.find_element(By.TAG_NAME, "body").text)
# release the resources and close the browser
driver.quit()/
터미널에서 다음 응답을 받게 됩니다.
{
“origin”: “194.5.25.34:443”
}
이는 Selenium이 프록시 서버를 사용해 페이지로 이동하고 있음을 의미합니다. 다만 무료 프록시는 속도가 느리고 데이터를 판매할 수 있으므로 주의해야 합니다.
Selenium Wire
Selenium Wire는 네트워크 트래픽을 가로채고 분석할 수 있는 강력한 Selenium 확장 기능입니다. HTTP 요청과 응답을 검토하면 웹 애플리케이션이 서버와 상호작용하는 방식을 더 잘 이해할 수 있습니다. Chrome 드라이버는 사용자 이름과 비밀번호를 자동으로 처리하지 않으므로 Selenium Wire와 같은 타사 플러그인이 필요합니다.
Selenium Wire를 설치하려면 터미널에서 다음 명령을 실행합니다.
pip install blinker==1.7.0 selenium-wire/
pip3 install blinker==1.7.0 selenium-wire/
Selenium에서 DataImpulse 프록시 사용
이제 DataImpulse 프록시를 사용할 차례입니다. 모든 설치를 마쳤으므로 프록시 인증을 계속 진행할 수 있습니다. 이 단계에서는 DataImpulse 대시보드에서 선택한 요금제 섹션에 저장된 로그인 정보, 비밀번호, 주소, 포트가 필요합니다. 레지덴셜 프록시(residential proxy)를 사용하겠습니다.
스크립트로 넘어가겠습니다.
from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# configure the proxy
proxy_username = ""
proxy_password = ""
proxy_address = "gw.dataimpulse.com"
proxy_port = "823"
# formulate the proxy url with authentication
proxy_url = f"http://{proxy_username}:{proxy_password}@{proxy_address}:{proxy_port}"
# set selenium-wire options to use the proxy
seleniumwire_options = {
"proxy": {
"http": proxy_url,
"https": proxy_url
},
}
# set Chrome options to run in headless mode
options = Options()
options.add_argument("--headless=new")
# initialize the Chrome driver with service, selenium-wire options, and chrome options
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
seleniumwire_options=seleniumwire_options,
options=options
)
# navigate to the target webpage
driver.get("https://httpbin.io/ip")
# print the body content of the target webpage
print(driver.find_element(By.TAG_NAME, "body").text)
# release the resources and close the browser
driver.quit()/
VS Code에서는 다음과 같이 표시됩니다.
결과로 ‘origin’이 포함된 응답을 받게 됩니다. 이는 인증이 성공적으로 완료되었음을 의미합니다.
팁
- 공식 웹사이트만 방문 – 필요한 모든 프로그램은 안전한 공식 사이트에서 다운로드합니다.
- 호환성 확인 – Selenium, ChromeDriver, 브라우저의 버전이 서로 호환되는지 다시 확인합니다.
- 정기적으로 업데이트 – 최신 기능을 사용하기 위해 Selenium, ChromeDriver 및 기타 도구를 정기적으로 확인합니다.
- 로그인 정보 안전하게 관리 – 인증 정보를 안전하게 보호하고 관리합니다.
- 가상 환경 사용 – 가상 환경을 만들어 종속성을 체계적으로 관리하고 패키지 충돌을 방지합니다.
- 오류 처리 – 프록시를 사용하거나 웹 요소를 다룰 때 발생할 수 있는 문제에 대응하도록 스크립트에 오류 처리 메커니즘을 추가합니다.
결론
Selenium 설정을 고려하고 있다면 꼭 시도해 보시기 바랍니다. Selenium에 프록시를 사용하면 엔진에 기어를 하나 더 추가하는 것처럼 더 큰 성능과 제어력을 얻을 수 있습니다. 안내와 팁을 따라 첫 시도에 모든 패키지를 성공적으로 적용합니다. 더 빠른 속도, 보안, 안정성을 누리려면 무료 프록시보다 신뢰할 수 있는 프록시를 선택하는 편이 좋습니다.









