본문 바로가기
ETC/Python

[Python] Selenium ChromeDriver 우회하기 Bot 방지 해결법

by Guardy 2020. 12. 8.
728x90

#Selnium #ChromeDriver #Bot 우회하기 #Bot Bypass #Chrome

크롤링을 하기 위해 Selenium으로 봇을 만들어 사이트를 크롤링하다가 갑자기 Bot으로 탐지되어 정상적으로 크롤링을 하지 못하는 경우가 생깁니다.

여러 우회방법이 있겠지만 이번 글에서 소개해드릴 방법은 세가지입니다. IP, USER-AGENT, REFERER 입니다.
물론 이 세가지보다 중요한것은 "너무 봇같지 않게" 크롤링하는 것입니다.
너무 빠르게 탐색한다는지 그런 행위들은 사이트에서 쉽게 봇으로 탐지할 수 있습니다.

이제 방법을 소개해드리겠습니다.

1. Random IP로 크롤링

tor를 이용한 임의의 IP로 크롤링하는 방법입니다. tor는 다음 사이트에서 다운로드할 수 있습니다.

tor 다운로드

 

The Tor Project | Privacy & Freedom Online

Defend yourself against tracking and surveillance. Circumvent censorship.

www.torproject.org

options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=socks5://127.0.0.1:9050')

tor설치 후 proxy server로 바뀐 아이피로 크롤링할 수 있습니다.

2. user-agent 설정

    options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36")
    options.add_argument("app-version=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36")

Chromedirver의 경우 user-agent가 bot으로 나와 웹사이트에서 걸리는 경우도 있습니다.

이 경우 user-agent를 다음과 같은 형식으로 지정하면 됩니다.

3. Referer 설정

Referer를 보는 사이트들도 매우 많다. Referer의 경우, 따로 코드를 짤 필요 없이 구글 확장프로그램을 이용하면 된다.

필자는 Referer Control이라는 확장 프로그램을 이용한다. 

chrome.google.com/webstore/detail/referer-control/hnkcfpcejkafcihlgbojoidoihckciin?hl=ko

 

Referer Control

Control the HTTP Referer on a per-site basis.

chrome.google.com

설치한 뒤 확장 프로그램을 키면 다음과 같은 화면이 나오는데, Custom을 눌러 원하는 대로 Referer을 지정해주면 된다.

이 이외에도 다양한 방법들로 사이트는 봇을 탐지한다. 필자의 경우 연구용으로 구글 로그인을 시도한 적 있는데 3일동안 봇 우회를 계속해서 연구하여 결국 성공했다.

더욱 좋은 방법이 있으면 댓글로 부탁드립니다.

728x90