selenium headless模式 绕过反爬机制

阅读数:110 评论数:0

跳转到新版页面

分类

python/Java

正文

Selenium在使用headless模式时,有以下几个问题

1、userAgent信息与正常模式不一致

2、window.navigator.webdriver 值即使设置了开发者模式结果依旧为true

大部分反爬机制也是根据这两条做的。

解决方法:

(1)手动更改userAgent信息

private final static String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36";
ChromeOptions option = new ChromeOptions();
option.addArguments("user-agent=" + USER_AGENT);
ChromeDriver driver = new ChromeDriver(option);

(2)通过 addScriptToEvaluateOnNewDocument() 方法,在页面还未加载之前运行一段脚本,更改webdriver的值为undefined

HashMap<String, Object> map = Maps.newHashMap();
map.put("source", "Object.defineProperty(navigator, 'webdriver', {get: () => undefined }); ");
driver.executeCdpCommand("Page.addScriptToEvaluateOnNewDocument", map);



相关推荐