【selenium】反屏蔽方法
【摘要】
一般来讲,使用selenium访问某个网址(浏览器以Chrome为例),都会有Chrome正受到自动测试软件的控制的提示
以百度为例:
from selenium import webdriver
...
一般来讲,使用selenium访问某个网址(浏览器以Chrome为例),都会有Chrome正受到自动测试软件的控制
的提示
- 以百度为例:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://baidu.com')
- 1
- 2
- 3
- 4
有些网站会通过检测进行屏蔽,拒绝访问。
检测的基本原理:
检测当前浏览器窗口下的window.navigator
对象是否包含webdriver
这个属性。因为在正常使用浏览器的情况下,这个属性是undefined
的,然而,一旦我们使用了selenium
,selenium
会给Window.navigator
设置webdriver
属性,很多网站就通过JavaScript判断,如果webdriver
存在就直接屏蔽。
解决方法:
可以使用CDP来解决这个问题,通过CDP,我们可以实现在每个页面刚加载时执行JavaScript代码。
CDP:Chrome Devtools-Protocol,Chrome开发工具协议
- 示例代码如下(仍以百度为例):
from selenium import webdriver
option = webdriver.ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=option)
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
'source': 'Object.defineProperty(navigator, "webdriver", {get:()=>undefined})'
})
driver.get('https://baidu.com')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
文章来源: luckystar.blog.csdn.net,作者:爱打瞌睡的CV君,版权归原作者所有,如需转载,请联系作者。
原文链接:luckystar.blog.csdn.net/article/details/123205809
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)