Selenium Chromedriver被反爬如何隐藏Chromedriver特征码

2022年5月10日18:15:57 发表评论 114 ℃

最近做一个爬虫项目,是通过selenium模拟浏览器进行爬取的,当启用chromedriver无头模式时就会无法正常访问,按照网上的方法隐藏了一些chromedriver的特征码还是无法访问。

通过网上资料发现,实际上Selenium 启动的浏览器,有几十个特征可以被网站通过 JavaScript 探测到。可以通过访问https://bot.sannysoft.com/进行测试。

正常通过浏览器访问该网站,结果如图:

Selenium Chromedriver被反爬如何隐藏Chromedriver特征码

通过Selenium Chromedriver 无头模式(--headless)打开该网站,结果如图:

Selenium Chromedriver被反爬如何隐藏Chromedriver特征码

在Chromedriver的headless模式下面,如何才能全部隐藏这些特征呢?

我在网上找到了一个stealth.min.js文件可以隐藏这些特征,这个文件的生成方式可以参考,github地址是https://github.com/berstend/puppeteer-extra/tree/master/packages/extract-stealth-evasions

具体的使用方法如下:

# -*- coding: utf-8 -*-
"""
    :author: 阿汤博客
    :Description: selenium chromedriver 特征码隐藏
    :CreateTime: 2022-05-10 17:02:05
"""
import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
chrome = Options()
chrome.add_argument('--headless')
chrome.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36')
chrome.add_argument('--disable-gpu')
chrome.add_argument('--no-sandbox')
browser = Chrome(options=chrome)
with open('./stealth.min.js') as f:
    js = f.read()
    browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": js
    })
browser.get('https://bot.sannysoft.com/')
time.sleep(1)
# 保存为图片
browser.save_screenshot('atang.png')
# 可以保存源代码为 html 再双击打开,查看完整结果
source = browser.page_source
with open('atang.html', 'w') as f:
    f.write(source)

运行代码查看atang.png:

Selenium Chromedriver被反爬如何隐藏Chromedriver特征码

再查看atang.html文件:

Selenium Chromedriver被反爬如何隐藏Chromedriver特征码

发现和我们通过浏览器访问https://bot.sannysoft.com/结果一致了。

如果觉得stealth.min.js文件自己生成麻烦,可以直接访问我的网盘获取,我已经生成好了。

文件下载
下载密码:发表评论并刷新可见!
下载地址
精选全网爆款产品,爆品销量榜单,全场低至0元起,还有更多云产品免费试用,带你0门槛上云

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: