目录
一、简介
1、浏览器指纹识别
2、行为分析
3、为什么会被浏览器检测呢?
二、如何知道自己已经被检测到
1、使用window.navigator.webdriver属性
2、使用在线网站测试工具查看
2.1、手动打开该网页返回
2.2、使用自动化测试工具打开
三、规避检测解决方案
1、使用无头浏览器
1.1、--headless
1.2、--disable-gpu
1.3、--no-sandbox
2、模拟用户行为
2.1、模拟鼠标和键盘操作
2.2、随机化操作
3、设置浏览器的用户代理(User-Agent)
4、undetected_chromedriver库(推荐)
四、结尾
一、简介
在网络技术飞速发展的今天,自动化测试作为软件质量保证的重要手段,已经越来越受到开发者和运维人员的重视。其中,Selenium以其强大的功能和灵活的跨平台特性,成为了许多开发者进行Web应用自动化测试的首选工具。然而,随着浏览器安全策略的不断完善,如何有效地防止Selenium在自动化测试过程中被浏览器检测到,成为了开发者们面临的一个新的挑战。本文将详细探讨Selenium在防止被浏览器检测方面的技巧,帮助开发者更好地应对这一问题。
1、浏览器指纹识别
浏览器指纹识别技术(Browser Fingerprinting)是一种通过分析用户的浏览器行为、配置和功能来识别用户的在线身份和行为的技术。它利用浏览器中的一些特性,如操作系统、浏览器版本、设备类型、插件和用户活动等,构建一个唯一的“指纹”信息。这些信息可以被网站和服务器用来追踪、定位和分析用户的访问行为,从而实现广告定向、个性化推荐、用户细分等目的。
浏览器指纹识别技术具有以下特点:
- 用户隐私性较低:由于浏览器指纹识别技术可以通过分析用户的浏览器行为来获取用户信息,因此用户的隐私性较低。
- 难以防范:由于浏览器指纹识别技术依赖于浏览器特性,很难完全防范。部分浏览器已经针对这种技术提供了保护措施,但并不能完全消除风险。
- 用户体验影响较小:虽然浏览器指纹识别技术可能会影响用户的隐私和体验,但通常情况下,它不会对用户造成显著的影响。
2、行为分析
浏览行为分析(Behavioral Analysis,BA):这是一种分析用户在浏览器中的行为模式的方法,包括用户的浏览历史、访问的网站类型、停留时间等。通过对这些信息的分析,可以判断操作者是否为真人。
在使用自动化过程中尽量避免快速操作,在进行每个步骤的操作中最好停留一下,最好使用模拟鼠标和键盘来操作
3、为什么会被浏览器检测呢?
- 安全性原因:浏览器通常会对一些恶意行为进行监控和防范,Selenium 模拟浏览器操作的行为可能会被认为是恶意行为。
- 用户体验原因:浏览器的目的是为用户提供一个良好的用户体验,而 Selenium 模拟浏览器操作可能会影响用户的正常使用体验。
- 性能问题:Selenium 模拟浏览器操作可能会导致浏览器性能下降,影响其他用户的正常使用。
- 竞争问题:浏览器厂商通常会限制第三方工具的使用,以避免用户过度依赖这些工具,影响浏览器的稳定性和性能。
二、如何知道自己已经被检测到
1、使用window.navigator.webdriver属性
`window.navigator.webdriver` 是一个属性,它返回一个布尔值,表示当前浏览器是否支持 WebDriver 技术。WebDriver 是一种自动化测试技术,允许开发人员使用类似于操作浏览器的 API 来测试网页应用程序。
打开浏览器,按F12打开控制台,在控制台中输入window.navigator.webdriver
可以看到返回结果是一个false
值 | 描述 |
true | 表示当前浏览器支持 WebDriver |
false | 表示当前浏览器不支持 WebDriver |
undefined | 表示当前浏览器没有提供关于是否支持 WebDriver 的信息 |
这个属性的值对于使用 WebDriver 进行自动化测试非常重要,因为它可以帮助开发人员确定是否能够在浏览器中使用 WebDriver 进行测试。
当手动打开网站的时候返回结果正常都是false or undefined 因为我们是真人进行操作,但是当使用selenium等其他自动化工具打开网站的时候,很有可能会被浏览器检测到是测试机器人在操作,返回true
通俗来讲就是手动操作打开浏览器会返回false 或者 undefined,使用自动化机器人打开浏览器很大几率会出现true,部分高级网站当识别到你的返回值是true就会返回给你一些错误的网站信息来阻止你的自动化