selenium库的使用(十八):execute_cdp_cmd方法隐藏浏览器特征

有一个js文件,它可以将浏览器的几十种特征隐藏,在selenium打开任何页面之前,先使用execute_cdp_cmd方法运行这个js文件

参考资料

参考资料

使用selenium访问这个网站 https://bot.sannysoft.com/ 它会显示有哪些特征被检测出

不运行js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument(
'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')

driver = Chrome(options=options)

# 查看特征是否隐藏
driver.get('https://bot.sannysoft.com/')
time.sleep(5)
# 截图
driver.save_screenshot('./a.png')
# 保存源代码为 html
source = driver.page_source
with open('./b.html', 'w') as f:
f.write(source)

标红的是被检测出来的特征
js_yuan

运行js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument(
'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')

# 如果是chrome 88 版本添加下面一行
options.add_argument("--disable-blink-features=AutomationControlled")

driver = Chrome(options=options)

# 输入 stealth.min.js 文件路径
with open('./stealth.min.js') as f:
js = f.read()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": js
})

# 查看特征是否隐藏
driver.get('https://bot.sannysoft.com/')
time.sleep(5)
# 截图
driver.save_screenshot('./a.png')
# 保存源代码为 html
source = driver.page_source
with open('./b.html', 'w') as f:
f.write(source)

# 退出驱动并关闭浏览器
driver.quit()

可以看到很多特征已被隐藏
js

下载js文件

下载链接:stealth.min.js
解压密码:gyqsdbd