selenium 우회방법에 관하여

루까까·2023년 7월 17일

selenium으로 자동화하는데 있어 요즘은 자동화 봇을 막는 사이트가 많아지고 있다.(예를들어 네이버?)

해당 이미지가 나온 사유는 사이트에서 봇이라는 것을 감지하였기에 나온 이미지이다.
봇으로는 해당 방식을 뚫기에는 어려움이 있기에 최선의 방법으로는 봇이라는 것을 감지 못하게 우회 하는 것이다.

우회방법

우회방법은 크게 세가지로 말할 수 있다.

1. 복사 + 붙여넣기

import pyperclip

pyperclip

  • Pyperclip은 복사/붙여넣기 클립보드 기능 사용을 위한 크로스 플랫폼 파이썬 모듈 (Pyperclip 공식 문서)
  • Pyperclip을 사용해서 간단하게 파이썬으로 클립보드에 텍스트를 ‘복사’하고, 저장한 텍스트를 ‘붙여넣기’할 수 있다
  • 쉽게 말해, ctrl + c, ctrl + v

자동화로 특정 사이트에 로그인을 시도하려고 할 때, 로그인을 너무 빨리 하는 경우 사이트에서 봇으로 감지해 막을 경우도 있다.
id, pw 기입전에 time.sleep을 걸어주거나 혹은 id, pw를 기입할 때, 글자 입력할 때마다 시간을 걸어주어 우회를 할 수도 있지만 번거롭기에 쉽게
id와 pw를 복사 붙여넣은 방식으로 우회를 할 수 있다.

2. 프로필 등록

실제 자신의 크롬브라우저 처럼 설정을 하여 실행시키면 우회를 할 수 있다.
본인 크롬브라우저의 프로필을 등록하게 되면 봇이 실행시키는 것이 아닌 사람이 실행시킨 것으로 속일 수 있다.
크롬 브라우저의 프로필 경로는 chrome://version/에서 확인 가능하다.
해당 경로에 접속하면

이런 화면이 나오게 되는데 여기서 프로필 경로를 가져오면 된다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = Options()
chrome_options.add_argument('님 프로필 경로')

service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get('https://www.google.com')

3. user-agent 등록하기

프로필등록이 힘들다면 user-agent방법으로 등록해도 같은 원리로 동작한다.
user-agent는 해당 사이트에서 확인 가능하다.
user-agent 확인하기

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = Options()
user_agent = '님 user_agent'
chrome_options.add_argument('user_agent =' + user_agent)

service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)

여담

Service(executable_path=ChromeDriverManager().install())
이건 driver를 최신 버전으로 자동설치해주는 기능이다. 해당 부분은 다음 글에서 자세히 확인가능하다.
driver 최신버전 관리하기

profile
기타치는 개발자

0개의 댓글