selenium反爬-绕过浏览器指纹的常用方法

方法一:去除window.navigator.webdriver特征

代码如下:

from selenium.webdriver import ChromeOptions
from selenium import webdriver

# 实例化对象
option = ChromeOptions()
option.add_experimental_option(‘excludeSwitches’,[‘enable-automation’])# 开启实验性功能

# 去除特征值
option.add_argument(“–disable-blink-features=AutomationControlled”)

# 实例化谷歌
driver = webdriver.Chrome(options=option)
driver.get(“https://www.baidu.com” )

方法二:使用Undetected_chromedriver

Undetected_chromedriver 是一个经过优化的 Selenium WebDriver,可以避免触发反机器人程序。

如绕过 Cloudflare 、Akamai、知乎。它适用于 Google ChromeBrave 和许多其他基于 Chromium 的浏览器。

代码如下:

import undetected_chromedriver as uc
driver = uc.Chrome(use_subprocess=True)
driver.get(“[https://www.baidu.com&#8221](https://www.baidu.com%26/#8221); )

还有一点要注意:

异常现象:

如果使用pyinstallerundetected-chromedriver直接进行打包,那打包后的exe大概率无法运行的。

解决方法:

在代码最开始在import 模块之前加上以下内容,然后再进行打包即可:

from multiprocessing import freeze_support

freeze_support()

原因解析:

在调用某些模块的时候,也是进程,而在多进程中,你程序中的进程不会被阻塞,而一直循环起进程。而undetected-chromedriver内部正好就开了进程。

### 瑞数虫机制下的 Selenium 应对策略 瑞数作为国内知名的动态安全防护厂商,其核心能力在于通过动态混淆、动态验证以及行为分析等方式对抗自动化工具访问。对于基于 Selenium虫应用而言,瑞数可能会利用以下几种方式进行检测: #### 1. **Navigator.webdriver 属性检测** 大多数现代浏览器在被 Selenium 启动时会自动设置 `navigator.webdriver` 属性为 `true`,这成为许多系统的首要检测手段之一。为了绕过这一检测,可以通过注入 JavaScript 修改该属性值。 ```javascript Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); ``` 此外,在某些情况下还需要覆盖其他可能暴露 WebDriver 特征的对象或方法[^1]。 #### 2. **浏览器指纹识别** 浏览器指纹是指通过对设备硬件特性(如屏幕分辨率、字体列表)、软件环境(插件数量、操作系统类型)以及其他参数组合而成的独特标识符。瑞数能够依据这些信息判断当前请求是否来自真实用户还是脚本控制的客户端。 解决方案可以考虑手动调整部分特征以匹配正常用户的配置文件,比如更改 User-Agent 字符串或者模拟不同的窗口尺寸等操作[^3]。 #### 3. **无头模式探测** 当启用 headless mode 时,一些特定的行为模式容易泄露身份,例如缺少图像加载支持或是异常快速的操作流程。因此建议尽量避免使用完全隐身状态运行测试实例;必要时候也可以尝试引入人为延迟来模仿自然交互过程。 #### 4. **网络流量监控** 如果目标站点部署了 WAF(Web Application Firewall),那么它很可能会记录下所有进出的数据包并对其中包含的内容做进一步审查。此时就需要格外注意隐藏敏感字段名称及其对应的值形式,同时也要小心处理 Cookies 和 Headers 中可能出现的问题[^5]。 #### 5. **JavaScript挑战题解答** 对于那些需要实时计算验证码或者其他复杂逻辑才能继续前进的情况,则必须具备相应的解析算法才行。通常来说这是最棘手的一个环节因为涉及到逆向工程方面的知识和技术积累[^2]。 综上所述,面对像瑞数这样强大的防御体系,单纯依靠简单的伪装措施往往难以奏效。实际项目开发过程中应当综合运用多种技巧,并保持持续更新迭代的态度去适应不断变化的安全形势。 ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from selenium.webdriver.common.by import By import time options = webdriver.ChromeOptions() prefs = {"profile.managed_default_content_settings.images": 2} # Disable images to speed up loading times. options.add_experimental_option("prefs", prefs) # Add arguments and experimental options here... options.add_argument("--start-maximized") options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(service=ChromeService(), options=options) js_script = """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }); """ try: driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js_script}) driver.get("http://example.com") element = driver.find_element(By.ID,"someElementId") print(element.text) finally: time.sleep(5) # Simulate human-like behavior before quitting the session. driver.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚坏叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值