自定义指纹
简介
浏览器指纹技术利用您的浏览器和设备配置信息,生成近乎唯一的“数字指纹”,即使在没有 Cookie 的情况下也能追踪您的在线活动。好消息是,在抓取浏览器中,指纹配置是可选的。我们提供深度的浏览器指纹自定义能力,涵盖浏览器 User-Agent、时区、语言、屏幕分辨率等核心参数。功能可通过自定义启动参数进行扩展。这适用于多账号管理、数据采集和隐私保护等场景,使用 Scrapeless 自研的 Chromium 浏览器可完全避免被检测。默认情况下,使用我们的抓取浏览器服务会为每个会话生成随机指纹。
核心能力与限制
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)和屏幕尺寸下的基础渲染逻辑。
操作指南
指纹参数说明
| 参数名称 | 类型 | 描述 |
|---|---|---|
| userAgent | string | 定义浏览器 HTTP 请求头中的 User-Agent 字符串,包含浏览器引擎、版本号和操作系统等关键标识信息。网站使用该值识别客户端环境,影响内容适配和功能。默认值:跟随浏览器 |
| platform | enum | 指定 JavaScript navigator.platform 属性的返回值,表示运行环境的操作系统类型。可选值为 “Windows”、“macOS” 或 “Linux”。该参数将用于特性检测及系统相关功能的启用判断。默认值:Windows |
| screen | object | 定义浏览器报告的显示设备物理特征参数,直接映射至 JavaScript window.screen 对象。 |
| screen.width | number | 物理屏幕宽度(像素),映射至 screen.width 属性,影响媒体查询和响应式布局。默认值:跟随随机指纹,最小值 640。 |
| screen.height | number | 物理屏幕高度(像素),映射至 screen.height 属性,与宽度共同决定设备分辨率特征。默认值:跟随随机指纹,最小值 480。 |
| localization | object | 控制浏览器的本地化环境配置,包括语言、区域和时区参数,影响显示格式和内容本地化行为。 |
| localization.basedOnIp | boolean | 是否根据 IP 自动设置时区和语言。 |
| localization.timezone | string | 符合 IANA 时区数据库格式的时区标识符(例如 “Asia/Shanghai”),控制 JavaScript 日期对象和 Intl.DateTimeFormat 输出的默认时区行为,是时区指纹的关键组成部分。默认值:America/New_York |
| localization.languages | [string] | 浏览器支持的语言优先级列表,映射至 navigator.languages 属性和 HTTP Accept-Language 请求头,决定网站的内容语言选择逻辑。默认值:“en”, “en-US” |
| args | object | 使用命令行开关运行浏览器(例如 --window-size、--proxy-bypass-list 等,了解更多)。请注意,以下参数不受支持:--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.36Mozilla/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。
示例值:
| width | height |
|---|---|
| 1920 | 1080 |
| 1366 | 768 |
| 1280 | 720 |
| 768 | 1280 |
localization
类型:object
描述:控制浏览器的本地化环境配置,包括语言、区域和时区参数,影响显示格式和内容本地化行为。
localization.basedOnIp:是否根据 IP 自动设置时区和语言。
localization.timezone:符合 IANA 时区数据库格式的时区标识符,控制 JavaScript 日期对象和 Intl.DateTimeFormat 输出的默认时区行为,是时区指纹的关键组成部分。
示例值:
America/New_YorkAsia/ShanghaiEurope/London
localization.languages:浏览器支持的语言优先级列表,映射至 navigator.languages 属性和 HTTP Accept-Language 请求头,决定网站的内容语言选择逻辑。
示例值:
["fr-FR", "en-US", "zh-CN"]["en-US", "es-ES", "de-DE"]
参考:tz 数据库时区列表
args
类型:object
描述:使用命令行开关运行浏览器,点击了解更多。请注意,以下参数不受支持:--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' });
// 自定义浏览器指纹
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' // 将窗口大小设置为与屏幕指纹一致
}
}
// 创建浏览器会话并获取 WebSocket 端点
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();
})();伦理声明
我们倡导负责任的指纹自定义:
- 仅用于合法授权的场景(如企业数据合规采集、内部风控测试)。
- 严禁使用伪造的指纹从事网络诈骗或侵犯用户隐私。