文档浏览器与 CrawlAgent Browser自定义指纹

自定义指纹

简介

浏览器指纹利用你的浏览器和设备配置信息,创建一个近乎唯一的“数字指纹”,即使没有 cookies,也能用于追踪你的在线活动。好消息是,在 Agent Browser 中,指纹配置是可选的。我们为浏览器指纹提供了深度定制能力,例如浏览器 user agent、时区、语言和屏幕分辨率等核心参数。功能还可通过自定义启动参数进行扩展。这适用于多账户管理、数据采集和隐私保护等场景,使用 Scrapeless 自建的 Chromium 浏览器可完全规避检测。默认情况下,使用我们的 Agent Browser 服务会为每个会话生成一个随机指纹。

核心能力与限制

User-Agent 控制

  • 能力: 支持自定义 HTTP 请求头中的 User-Agent 字符串,允许定义浏览器引擎版本和操作系统类型。
  • 限制: 目前无法修改渲染引擎的细节(例如 WebGL 渲染特性)。

屏幕分辨率映射

  • 能力: 支持自定义 screen.width 和 screen.height 的返回值,以模拟基本的设备屏幕尺寸(必须符合物理宽高比)。
  • 限制: 目前无法伪造设备像素比(DPR)或 Retina 屏幕特性。

平台属性锁定

  • 能力: 允许为 navigator.platform 设置固定的返回值(仅支持 Windows/macOS/Linux),这会影响浏览器的特性检测逻辑。
  • 限制: 目前无法修改操作系统版本号或硬件架构信息。

其他限制:

此功能仅支持对浏览器原生暴露的标准化参数进行有限的调整。它不涉及硬件级指纹或高级行为伪装。

应用场景

  • 基础多账户隔离: 通过区分 User-Agent 和屏幕分辨率,避免简单的账户关联检测。
  • 轻量级数据采集: 模拟主流浏览器环境(Windows + Chrome),绕过目标网站的基础反爬策略(例如 User-Agent 黑名单)。
  • 兼容性测试: 验证网站在不同操作系统(Windows/macOS)和屏幕尺寸下的基本渲染逻辑。

操作指南

指纹参数说明

参数名称类型说明
userAgentstring定义浏览器 HTTP 请求头中的 User-Agent 字符串,包含浏览器引擎、版本号和操作系统等关键标识信息。网站使用此值来识别客户端环境,从而影响内容适配和功能。默认值:跟随浏览器
platformenum指定 JavaScript navigator.platform 属性的返回值,表示运行环境的操作系统类型。可选值为 “Windows”、“macOS” 或 “Linux”。此参数将用于特性检测以及系统相关功能的启用判断。默认值:Windows
screenobject定义浏览器上报的显示设备物理特性参数,直接映射到 JavaScript window.screen 对象。
screen.widthnumber物理屏幕宽度(像素),映射到 screen.width 属性,影响媒体查询和响应式布局。默认值:跟随随机指纹,最小值为 640。
screen.heightnumber物理屏幕高度(像素),映射到 screen.height 属性,与宽度一起决定设备分辨率特性。默认值:跟随随机指纹,最小值为 480。
localizationobject控制浏览器的本地化环境配置,包括语言、地区和时区参数,影响显示格式和内容本地化行为。
localization.basedOnIpboolean是否根据 IP 自动设置时区和语言。
localization.timezonestring符合 IANA 时区数据库格式的时区标识符(例如 “Asia/Shanghai”),控制 JavaScript 日期对象和 Intl.DateTimeFormat 输出的默认时区行为,是时区指纹的关键组成部分。默认值:America/New_York
localization.languages[string]浏览器支持的语言优先级列表,映射到 navigator.languages 属性和 HTTP Accept-Language 请求头,决定网站的内容语言选择逻辑。默认值:“en”、“en-US”
argsobject使用命令行开关运行浏览器(例如 --window-size、--proxy-bypass-list 等,了解更多)。请注意以下 args 不受支持:--load-extension, --user-data-dir, --fonts-dir, --remote-debugging-port

userAgent

类型:string 说明:定义浏览器 HTTP 请求头中的 User-Agent 字符串,包含浏览器引擎、版本号和操作系统等关键标识信息。网站使用此值来识别客户端环境,从而影响内容适配和功能。你可以自定义任意 userAgent。

示例值:

  • Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.83 Safari/537.36
  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.6834.83 Safari/537.36

platform

类型:enum 说明:指定 JavaScript navigator.platform 属性的返回值,表示运行环境的操作系统类型。此参数将用于特性检测以及系统相关功能的启用判断。

示例可接受值:

值说明
”Windows”Windows 操作系统,默认值
”macOS”macOS 操作系统
”Linux”Linux 操作系统

screen

类型:object 说明:定义浏览器上报的显示设备物理特性参数,直接映射到 JavaScript window.screen 对象。

screen.width:物理屏幕宽度(像素),影响媒体查询和响应式布局,最小值为 640。 screen.height:物理屏幕高度(像素),与宽度一起决定设备分辨率特性,最小值为 480。

示例值:

widthheight
19201080
1366768
1280720
7681280

localization

类型:object 说明:控制浏览器的本地化环境配置,包括语言、地区和时区参数,影响显示格式和内容本地化行为。

localization.basedOnIp:是否根据 IP 自动设置时区和语言。

localization.timezone:符合 IANA 时区数据库格式的时区标识符,控制 JavaScript 日期对象和 Intl.DateTimeFormat 输出的默认时区行为,是时区指纹的关键组成部分。

示例值:

  • America/New_York
  • Asia/Shanghai
  • Europe/London

localization.languages:浏览器支持的语言优先级列表,映射到 navigator.languages 属性和 HTTP Accept-Language 请求头,决定网站的内容语言选择逻辑。

示例值:

  • ["fr-FR", "en-US", "zh-CN"]
  • ["en-US", "es-ES", "de-DE"]

参考:list of tz database time zones


args

类型:object 说明:使用命令行开关运行浏览器,点击了解更多。请注意以下 args 不受支持:--load-extension, --user-data-dir, --fonts-dir, --remote-debugging-port

示例值:

  • 代理绕过:'--proxy-bypass-list': 'example.com'
  • 设置窗口尺寸:'--window-size': '1280,1024',建议设置为与 screen 指纹相同

示例代码

const { ScrapelessClient } = require('@scrapeless-ai/sdk');
const puppeteer =require('puppeteer-core');
const client = new ScrapelessClient({ apiKey: 'API Key' });
 
// custom browser fingerprint
const fingerprint = {
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.1.2.3 Safari/537.36',
    platform: 'Windows',
    screen: {
        width: 1280, height: 1024
    },
    localization: {
        languages: ['zh-HK', 'en-US', 'en'], timezone: 'Asia/Hong_Kong',
    },
    args: {
        '--proxy-bypass-list': 'example.com',
        '--window-size': '1280,1024' // set window size as the same as the screen fingerprint
    }
}
 
// Create browser session and get WebSocket endpoint
const { browserWSEndpoint } = client.browser.create({
    sessionName: 'sdk_test',
    sessionTTL: 180,
    proxyCountry: 'US',
    sessionRecording: true,
    fingerprint,
});
 
(async () => {
    const browser = await puppeteer.connect({browserWSEndpoint});
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    const info = await page.evaluate(() => {
        return {
            screen: {
                width:screen.width,
                height:screen.height,
            },
            userAgent:navigator.userAgent,
            timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
            languages:navigator.languages
        };
    });
    console.log(info);
 
    await browser.close();
})();

道德声明

我们倡导负责任的指纹自定义:

  • 仅用于合法授权的场景(例如企业数据合规采集、内部风控测试)。
  • 禁止使用伪造指纹从事网络欺诈或侵犯用户隐私。