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);