什么是浏览器指纹伪装?
无抓取浏览器提供在受管理的Chromium会话中可配置的浏览器指纹,用于网页自动化和测试工作流。
TL;DR
- 浏览器指纹欺骗会改变可观察的浏览器或设备信号。 目标是呈现一个选定的环境,而不是暴露每个原生值的未修改状态。
- 一个可信的指纹在内部是一致的。 与仅限桌面的屏幕、输入和图形信号配对的移动用户代理会产生矛盾。
- 欺骗比更改用户代理头更广泛。 JavaScript API、渲染输出、区域设置、时区、屏幕几何形状和网络行为都可以提供信号。
- 稳定的和旋转的身份解决不同的问题。 一个长期存在的账户流程通常需要连续性,而孤立的测试案例可能需要单独的配置文件。
- 隐私、测试和授权自动化是合法用途。 指纹控制不授予访问私人数据的权限,也不忽视网站的规则。
为什么指纹身份需要系统视角
浏览器指纹欺骗影响浏览器如何暴露状态、渲染内容或决定何时自动操作是安全的。精确的定义防止团队将狭窄的信号视为通用的答案。这也使得测试失败更容易诊断,因为预期的浏览器行为与已记录的生命周期、API或系统边界有关。
对于网页自动化,实际的问题总是比“页面准备好了吗?”或“浏览器看起来真实吗?”要窄。下一步可能需要启用一个控件、一个框架完成导航、一个组件附加其内部树,或一个渲染表面保持一致。下面的部分将这个概念转化为可观察的检查,而不是依赖于民间传说。
浏览器指纹欺骗简单解释
浏览器指纹欺骗是对网站可以观察到的浏览器、操作系统、设备或渲染环境的值进行控制修改。一个网站可能会将这些值结合成一个指纹,从而帮助它识别回访的环境,即使没有传统的 cookie 可用。欺骗修改了一些输入,目的是呈现一个选择的配置文件,而不是主机机器的原生配置文件。
指纹和存储标识符之间的区别很重要。Cookie 是写入浏览器的状态。指纹是从浏览器已经暴露或生成的特征中推断出来的。 W3C 指纹识别指南 定义指纹识别为通过配置设置和其他可观察特征识别或重新识别用户、用户代理或设备。因为标识符是推断出来的,仅清除站点存储并不一定会改变输入。
伪装可以支持隐私研究、区域和响应的质量保证、带有授权的欺诈系统测试,以及必须重现已知客户端环境的浏览器自动化。同样的技术也可以被滥用。因此,良好的实践始于获得许可、公开或其他授权的数据、有限的请求速率和明确的测试目标。修改的浏览器身份是一种环境控制,而不是访问权。
哪些信号可以被欺骗?
可见表面跨越多个层。请求头可以揭示浏览器系列、接受的语言和平台提示。JavaScript 可以读取屏幕尺寸、色彩深度、设备像素比、时区、区域设置、硬件并发、输入能力和媒体支持。Canvas、WebGL 和 Web Audio 可以产生受软件和硬件栈影响的输出。字体、权限、存储行为和特性支持提供了更多上下文。
规则: 1. 仅输出翻译的文本——没有解释,没有额外的包装代码块。 2. 精确保留Markdown/HTML结构(标题、列表、链接、表格)。 3. 保持任何占位符令牌,如@@CODEBLOCK_0@@或@@INLINECODE_0@@,完全不变;绝不要翻译、重新排序、合并或重新格式化它们。 4. 不要添加或删除```代码块,并且不要将普通文本包装成代码块。 The MDN 关于浏览器指纹识别的定义 将被动观察与在页面中运行代码的主动收集分开。这样的分离解释了为什么仅限于头信息的工具无法重现完整的浏览器身份。它可能在保持不同的 JavaScript 可见值的同时对齐网络请求。相反,在不对齐 HTTP 客户端提示的情况下更改 JavaScript 属性可能会造成相反的不匹配。
一个成熟的指纹配置将这些字段视为一个配置文件。浏览器系列限制了合理的特征支持。操作系统限制平台字符串和常用字体。屏幕大小、像素比、触摸支持和指针类型应该描述一个设备类别。区域设置、时区、地理位置和出境地区应该讲述一个兼容的地理故事。图形供应商和渲染器值应该适应操作系统和展示它们的浏览器构建。
一致性比最大随机性更重要
在每次导航中随机化每个值很少能产生一个可信的环境。真实设备在一个群体中是多变的,但在一个会话中通常是稳定的。一个在每个页面视图中报告新的屏幕尺寸、图形堆栈、语言列表和处理器形状的浏览器,看起来更像是仪器在改变值,而不是一个人更换设备。
一致性有两个维度。内部一致性意味着在某一时刻观察到的值彼此一致。时间一致性意味着这些值在相关访问之间保持适当的稳定性。一个登录、打开仪表板并下载报告的会话通常应该保持一个配置文件。一个有意包含桌面、平板和移动设备的测试矩阵可以创建单独的会话,每个会话都有其自身的一致配置文件。
最强的审查方法是矛盾追踪。将用户代理与平台和功能支持进行比较。将视口与屏幕尺寸和设备像素比进行比较。将语言与时区和出口区域进行比较。将WebGL供应商信息与声明的平台进行比较。将触控点与指针和悬停媒体查询进行比较。当值独立设置时,每一对都很容易被忽视。
欺骗、阻断和标准化
欺骗会改变值,阻断会阻止访问信号,而标准化会使许多用户暴露同样的值。这些方法有不同的权衡。阻止画布读取可能会保护一个表面,但会破坏绘图应用程序或使缺失本身变得不寻常。随机化可以减少链接性,但可能会产生不稳定的输出。标准化值可以扩大匿名集,因为许多浏览器看起来相似。
这个 Tor浏览器设计文档 强调跨域不可链接性和通用浏览器配置,而不是无尽的每个字段的变化。这个设计教训延续到自动化:较少的连贯配置比一组无关的覆盖更容易推理。一个配置应作为一个单位选择,作为一个单位进行测试,并只在定义的边界处进行更改。
没有任何方法提供普遍保证。一个网站可以将浏览器信号与帐户历史、IP声誉、TLS行为、交互时间或服务器端观察结果结合起来。因此,指纹欺骗只是环境策略中的一层。它无法补偿矛盾的网络身份、不可能的用户行为、未经授权的访问或脆弱的自动化逻辑。
授权自动化的实用工作流程
首先定义真实的需求。响应式测试可能只需要视口、屏幕和像素比配置。本地化测试可能需要区域、语言、时区和区域路由。一个持久的浏览器任务可能需要一个稳定的配置以支持整个会话。避免更改高熵API,除非任务依赖于它们,并且生成的值可以验证。
接下来,选择一个一致的基线并将其记录为结构化的配置。将浏览器系列、操作系统、设备类别、区域、时区和屏幕几何保持在一起。为一个显著不同的身份创建一个新会话,而不是在流程中途改动当前会话。从浏览器内部观察页面,因为只有服务器头信息并不显示JavaScript所看到的内容。
最后,验证行为,而不是假设属性覆盖有效。读取暴露的值,检查响应式布局,确认预期的语言和时区,并检查画布或WebGL输出在需要稳定性的地方是否保持稳定。将结果与配置版本绑定。当浏览器引擎更新时,重新运行检查,因为功能支持和渲染行为可能会变化。
常见失败模式
最常见的失败是浅层用户代理交换。它更改了一个可识别的字符串,而保留了环境的其他部分不变。另一个是配置漂移:在一个任务中的页面之间值发生变化。第三种是过度拟合,其中一个配置模仿一个单一观察到的指纹,如此精确,以至于许多会话共享一个不太可信的相同身份。
禁用主要API也可能适得其反。普通浏览器支持画布、WebGL、音频、存储和现代布局特性。移除这些功能可能会破坏目标页面,并减少配置对其声明的浏览器系列的相似性。受控值或标准化输出通常比不断增长的阻塞接口列表更容易维护。
操作行为仍然很重要。一个连贯的指纹不能使一个无界请求模式看起来像正常使用。保持并发适应主机,等待有意义的页面状态,仅在工作流程需要连续性时重用会话,并将访问挑战视为审核授权和配置的信号。指纹工作应减少意外不一致,而不是掩盖滥用行为。
构建连贯的浏览器配置
从能够证明任务可以继续的最小条件或配置开始。保留标准兼容的浏览器行为,然后仅在工作流程需要时添加配置控制。记录浏览器版本和相关状态,以便将来的差异能够得到解释。可重复的观察比简单的宽泛声明一个页面、框架、显示或指纹“完成”或“安全”更有用。
- 定义下一步行动。 精确说明脚本或用户在等待或配置步骤后需要做什么。
- 选择一个可观察的信号。 偏好一个直接支持该行为的浏览器属性、生命周期状态、元素条件或渲染结果。
- 保持相关值的一致性。 浏览器、操作系统、屏幕、区域、图形和会话设置应描述一个合理的环境。
- 验证正常应用行为。 隐私或自动化干预不应默默破坏其更改的API或组件。
- 捕获诊断证据。 当检查失败时,保存相关的URL、状态、控制台消息和配置名称。
结论
浏览器指纹欺骗最好理解为环境配置:它改变可观察的浏览器信号,使会话呈现一个有意的、一致的配置文件。有用的实现会对齐头部、JavaScript属性、渲染表面、位置信号和会话生命周期。实用的测试不是每个值是否更改,而是这些值是否一致并在使用它们的工作流中保持稳定。
该 无垃圾抓取浏览器文档 解释了如何配置托管的浏览器会话,而 抓取浏览器产品概述 描述了浏览器自动化表面。这些资源为在授权工作流中应用该概念提供了产品背景。
准备测试一致的浏览器配置文件吗?
将浏览器渲染、会话配置和自动化基础设施移入托管的Chromium环境。
今天注册并获得 5美元的免费信用 — 无需信用卡.
领取您的5美元信用→常见问题
浏览器指纹欺骗是否与更改用户代理相同?
不。用户代理的更改影响一个请求信号,而浏览器指纹欺骗还可能覆盖JavaScript属性、屏幕几何、区域设置、时区、图形输出、音频输出和其他可观察行为。
指纹是否应该在每个页面上轮换?
通常不。一个会话内的相关操作通常应保持稳定的配置文件,而不同的测试用例或独立会话可能会使用不同的一致的配置文件。
指纹欺骗是否使自动化无法被检测?
不。网站可以将浏览器属性与网络、账户、时间、交互和服务器端信号结合起来,因此指纹配置无法提供普遍保证。
指纹欺骗是否合法?
该技术本身在隐私、质量保证和安全测试上有合法的用途,但授权、适用法律、合同条款以及访问数据的性质仍然支配工作流。