DEV Community

loading...

셀레늄 막기, 그리고 뚫기

Ukjin Yang
I'm a freelance full stack developer, from hell.
・1 min read

셀레늄 막기

보통 사이트들도 당연히 사용하고 있고, 간단하게 막을 수 있다. 당연하겠지만 WebDriver 를 막을 수 있는 웹 사이트의 유일한 방법이기도 하다.

if(navigator.webdriver) {
  alert('어디서 우리 신성한 사이트에 봇질이야?');
  // 진입 못하게 막는 예시. 응용하여 캡챠라던가 여러 조치 수행 가능
  document.write('');
}
Enter fullscreen mode Exit fullscreen mode

Navigator.webdriver - MDN

셀레늄으로 뚫기

웹 사이트가 할 수 있는 방법은 위 방법 뿐이기 때문에 대부분의 셀레늄으로 일반 브라우저를 위장하여 접속하고 테스트 자동화를 수행할 수 있다.
양심껏 쓰기 바란다. 물론 그래도 일부 무서운 사이트(특히 구글 등)는 알아채고 캡챠를 보여주거나, 액티브엑스 떡칠한 미친 사이트는 웹드라이버 프로세스를 죽이기도 한다.

System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
WebDriver driver =  new ChromeDriver(options);
driver.get("https://www.google.com/");
Enter fullscreen mode Exit fullscreen mode
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\path\to\chromedriver.exe')
driver.get("https://www.google.com/")
Enter fullscreen mode Exit fullscreen mode

출처:
Selenium webdriver: Modifying navigator.webdriver flag to prevent selenium detection

Discussion (0)