模拟 / Emulation
2 分钟阅读
原文:https://go-rod.github.io/i18n/zh-CN/#/emulation
收录该文档时间:
2024-11-21T08:08:39+08:00
模拟 / Emulation
Rod 提供了多种方法来模拟页面环境。
设备
要同时为页面设置视区、User-Agent、方向等,可以使用预定义的设备:
|
|
或者定义你自己的设备:
|
|
见预定义设备的代码,每个字段的意思都显而易见。
还可以通过 Browser.DefaultDevice 来为所有页面设置默认设备。
设备模拟默认会被起用(Devices.LaptopWithMDPIScreen 会被使用),这会覆盖某些浏览器的默认设定,这么做是为了稳定的一致性(比如有助于复现测试结果)。
你可以通过给 Browser.DefaultDevice
传特殊的 Clear 设备来禁用设备模拟功能。
|
|
或者你也可以直接使用 Browser.NoDefaultDevice 帮助函数。
User Agent
使用 Page.SetUserAgent 为特定页面指定 User Agent。
视区
使用 Page.SetViewport 为特定页面指定视区。
语言和时区
可以使用 launch env 为所有页面设置:
|
|
或者可以使用 EmulationSetTimezoneOverride 或 EmulationSetLocaleOverride 为特定页面设置:
|
|
权限
地理位置
使用 EmulationSetGeolocationOverride
配色方案和媒体
使用 EmulationSetEmulatedMedia
|
|
防止机器人检测
通常最好让无头浏览器对页面完全透明,以使页面无法判断它是被人或机器人控制的。 在某些情况下,某些页面可以使用客户端 js 检测页面是否由人或机器人控制, 此 web WebGL 、WebDriver 或 http 请求头。 您可以手工写一个 js lib 来隐藏所有的痕迹,或者使用 stealth 库: 代码示例。
如果 stealth
库不起作用,您可以用 launcher.NewUserMode
: 用户模式
您可以使用诸如 https://bot.sannysoft.com 等工具来测试您的配置。
浏览器指纹
浏览器指纹不是机器人检测。 它使用各种技巧来收集唯一的浏览器特征来识别浏览器。 网站可以使用它来跟踪用户,即使用户没有登录,它也被广泛用来标记无头爬虫。 例如,不同的用户通常会在他们的操作系统上安装不同的字体,我们可以使用它来区分不同的用户。 另一个例子是使用 canvas 来渲染文本,不同用户通常拥有不同的 GPU,图形驱动,或 OS,它们都会影响渲染图像的结果。
通常您可以通过启动多个浏览器实例来携带不同的指纹。 如果您为了节省内存和 CPU 而使用单个浏览器,您必须手动覆盖画布、字体等 API。
您可以使用开源项目,例如 FingerprintJS 来测试您的配置。