python自动化工具接管浏览器时伪装真实用户
·
目录
一、背景
python通常用来做爬虫、自动化相关的事情,但通过python自动化工具打开并控制的浏览器(谷歌及chrom内核浏览器),在浏览器环境中的navigator.webdriver、指纹等相关参数会与我们平常手动打开的浏览器不一致,反爬虫一般会监测这些,从而拦截自动化工具的访问。此时,我们就需要伪装正常打开浏览器的特征。
二、浏览器伪装
GitHub里有一个开源的工具:extract-stealth-evasions ,用来生成一段js代码补丁,可以注入到打开的浏览器里面,工具会自动补全使用自动化工具打开浏览器时缺失的浏览器特征,隐藏自动化的特征。
执行以下命令会在当前文件夹下生成一个包含全量补丁代码的 stealth.min.js 文件,可以在自动化工具打开目标网站前,将js文件引入并在每个页面打开前执行一次。
npx extract-stealth-evasions
浏览器CDP协议有暴漏一个双向通信的api接口协议(addScriptToEvaluateOnNewDocument),可以把上面的伪装js文件添加到此接口,这样在新页面打开或刷新时,都会注入执行一次伪装js代码。
# selenium
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': stealth_js_code
})
# drissionpage
page.run_cdp('Page.addScriptToEvaluateOnNewDocument', {
'source': stealth_js_code
})
三、其他
上述伪装js代码注入需在打开目标网站前完成,否则就可能会被检测到。同时还可以配合其他一些启动参数。
# 1. 隐藏自动化控制条
co.set_argument('--disable-blink-features', 'AutomationControlled')
# 2. 去除自动化提示开关
co.experimental_set_pref('excludeSwitches', ['enable-automation'])
四、使用代理服务器
有的一些特殊网站等,对访问的ip地域有限制,这时候就不得不通过代理的方式来进行访问,但浏览器启动时无法传入代理认证信息,只能通过浏览器插件的方式在代码方面把认证信息传入。最后通过add_extension的方式添加到启动的浏览器中。
扩展插件可以参考我的资源(ProxyServerPlugin)相关代码。
更多推荐

所有评论(0)