返回博客

电池API指纹识别:Facebook和TikTok如何通过电池电量追踪您

Battery API允许网站跟踪电池电量并创建设备的独特数字指纹。我们将讨论其工作原理以及在使用多个账户时如何保护自己。

📅2026年1月10日
```html

如果您在 Facebook Ads、Instagram 或 TikTok 上使用多个账户工作,您肯定遇到过这样的情况:一切设置正确——不同的代理、反检测浏览器、独特的 Cookie——但账户仍然被关联并被连锁封禁。原因之一就是 Battery API fingerprinting,这是一种通过您设备的电池数据进行跟踪的技术。

在本指南中,我们将讨论这种跟踪方法的工作原理,为什么它对多账户操作构成危险,以及如何在 Dolphin Anty、AdsPower 和其他反检测浏览器中正确设置保护。

什么是 Battery API 以及它是如何工作的

Battery API(电池状态 API)是一个标准的 Web 接口,允许网站获取您设备的电池状态信息。最初,这项技术是为了有益的目的而创建的:例如,Web 应用程序可以在电池电量低时降低视频质量,以延长设备的使用时间。

通过 Battery API,网站可以获取以下数据:

  • 电池电量——0% 到 100% 的百分比
  • 到完全放电的时间——在当前消费水平下的秒数
  • 到完全充电的时间——如果设备连接到电源
  • 充电状态——设备是连接到电源还是使用电池

这些数据有什么危险呢?问题在于,这些参数的组合几乎会创建一个唯一的设备数字指纹。两个不同用户在同一时刻拥有完全相同的电池电量(例如 73.4%)、相同的放电时间(例如 8347 秒)和相同的充电状态的可能性极小。

重要: Battery API 甚至在笔记本电脑的台式机上也能工作。如果您使用笔记本电脑进行多账户操作,电池数据可能会在使用不同代理和浏览器配置时暴露您。

网站如何获取 Battery API 数据

从技术上讲,这是通过一个简单的 JavaScript 代码实现的,该代码在页面加载时在浏览器中执行:

navigator.getBattery().then(function(battery) {
  console.log('电池电量: ' + battery.level * 100 + '%');
  console.log('到放电的时间: ' + battery.dischargingTime + ' 秒');
  console.log('到充电的时间: ' + battery.chargingTime + ' 秒');
  console.log('充电状态: ' + battery.charging);
  
  // 创建唯一的指纹
  var batteryFingerprint = battery.level + '_' + 
                          battery.dischargingTime + '_' + 
                          battery.chargingTime + '_' + 
                          battery.charging;
});

这段代码在用户不知情的情况下执行,并将数据发送到平台的服务器。接下来,这些数据与其他指纹识别参数(屏幕分辨率、时区、已安装的字体、WebGL 参数)结合,创建设备的唯一数字指纹。

为什么 Battery API 对多账户操作危险

对于套利者、SMM 专家以及所有使用多个账户的人来说,Battery API 造成了严重的问题:它允许平台即使在使用不同 IP 地址和浏览器配置时也能关联账户。

场景 1:在一台笔记本电脑上使用多个账户

想象一下这种情况:您是一个套利者,在一台笔记本电脑上管理 10 个 Facebook Ads 账户。每个账户的设置如下:

  • 在 Dolphin Anty 或 AdsPower 中的单独配置文件
  • 来自不同国家的独特 住宅代理
  • 不同的 User-Agent、屏幕分辨率、语言
  • 独特的 Cookie 和 localStorage

看起来一切都很完美。但问题是:所有 10 个账户都在同一台物理设备上,使用同一块电池。在 14:35,所有账户都向 Facebook 服务器发送相同的数据:

  • 电池电量:67.3%
  • 到放电的时间:9234 秒
  • 状态:不充电

对于 Facebook 的算法来说,这是一个红旗:10 个来自不同国家的“人”在同一时刻拥有完全相同的电池参数。这样的巧合几乎是不可能的。结果是,所有账户都被关联并连锁封禁(chain-ban)。

场景 2:拥有客户账户的 SMM 代理机构

对于 SMM 专家来说,情况更加危险。您在一台工作笔记本上管理 30 个不同客户的 Instagram 账户。如果 Instagram 检测到所有这些账户具有相同的 Battery API 指纹,平台可能会:

  • 将所有账户标记为可疑
  • 限制覆盖率和故事展示
  • 阻止广告启动
  • 在最坏的情况下——封禁客户账户

客户账户的损失不仅是财务损失,还有对代理机构的声誉风险。

真实案例: 一家 SMM 代理机构因 chain-ban 在一天内失去了 18 个客户的 Instagram 账户。原因是所有账户都在一台 MacBook Pro 上管理,Instagram 检测到了相同的 Battery API 数据。财务损失超过 400,000 卢布(客户损失 + 恢复账户)。

为什么常规保护方法无效

许多套利者和 SMM 专家认为,仅使用高质量的代理和反检测浏览器就足够了。但 Battery API 繞过了这些保护:

保护方法 能防止 Battery API 吗? 为什么无效
住宅代理 Battery API 在浏览器级别工作,代理不影响这些数据
不同的 User-Agent User-Agent 更改浏览器信息,但不更改设备的电池信息
清除 Cookie Battery API 不使用 Cookie,通过 JavaScript 工作
使用 VPN 代替代理 VPN 仅更改 IP 地址,电池数据保持真实
反检测浏览器(未设置) 部分 默认情况下,许多反检测浏览器不替换 Battery API

唯一可靠的保护方法是正确设置反检测浏览器中的 Battery API 替换。我们将在保护设置部分详细介绍。

Facebook、TikTok 和 Instagram 如何使用电池数据

不同平台以不同的侵略性使用 Battery API fingerprinting。了解这些差异将有助于为特定任务正确设置保护。

Facebook 和 Facebook Ads

Facebook 使用行业中最先进的指纹识别算法之一。Battery API 只是平台收集的 50 多个参数之一,用于创建唯一的设备指纹。Facebook 将电池数据与以下内容结合:

  • WebGL 指纹——显卡和渲染参数
  • Canvas 指纹——通过图形渲染创建的唯一指纹
  • AudioContext 指纹——音频子系统参数
  • 字体列表——系统中安装的字体
  • 屏幕参数——分辨率、颜色深度、纵横比
  • 时区和语言——时区和语言设置

对于 Facebook Ads 来说,尤其关键的是:如果平台发现多个广告账户具有相同的 Battery API 指纹,这可能导致:

  • 所有相关账户的即时封禁
  • Business Manager 被封锁
  • 无法创建新的广告账户
  • 硬件封禁(hardware ban)——封锁设备本身

Instagram

Instagram(属于 Meta)使用类似的算法,但有一些特点。该平台对移动设备上的多账户操作更宽容(许多用户合法拥有多个账户),但对桌面上的可疑活动进行严格封禁。

Instagram 中的 Battery API 与以下内容结合使用:

  • 行为模式——活动时间、操作速度、发布间隔
  • 地理位置——IP 地址与时区的匹配
  • 设备类型——移动应用与 Web 版本

如果您通过 Instagram 的 Web 版本在一台笔记本电脑上管理客户账户,相同的 Battery API 指纹可能会导致阴影封禁(shadowban)——账户未被封禁,但覆盖率降至零。

TikTok 和 TikTok Ads

TikTok 以其最具侵略性的反欺诈系统而闻名。该平台积极使用 Battery API 来打击:

  • 虚假观看和点赞
  • 为套利而养号
  • 通过机器人进行自动化

TikTok 的特点是,平台分析电池电量随时间的变化。如果多个账户显示出完全同步的电量变化(例如,所有账户在 30 分钟内从 85% 降至 78%),这明显表明是从同一设备操作。

给 TikTok Ads 套利者的建议: 使用 移动代理 与正确的 Battery API 替换结合使用。TikTok 对移动流量更宽容,移动 IP 更少受到封禁。

Google Ads 和 YouTube

Google 对 Battery API 的使用不如 Meta 或 TikTok 侵略性,但仍然会收集这些数据。其主要目标是打击点击欺诈(虚假点击广告)和检测机器人。

对于套利者来说,Google Ads 的关键点是:

  • Google 很少仅因 Battery API 封禁账户,但会将这些数据用于综合评估
  • 如果您有多个具有相同指纹的广告账户,Google 可能会限制预算支出
  • 如果怀疑欺诈,Google 可能会要求验证个人和业务身份

Battery API fingerprinting 的检测方法

在设置保护之前,了解平台如何使用 Battery API 进行跟踪非常重要。这将有助于选择正确的保护策略。

方法 1:静态指纹(瞬时快照)

最简单的方法是平台在页面加载时收集 Battery API 数据,并将其保存为指纹的一部分。例如:

  • 用户 A 在 14:00 登录 Facebook——电池电量 82%
  • 用户 B 在 14:05 登录 Facebook——电池电量 82%
  • 用户 C 在 14:10 登录 Facebook——电池电量 81%

如果这三位用户具有相同或非常接近的其他参数值(屏幕分辨率、时区、WebGL),平台可能会推测这是同一个人使用不同的账户。

方法 2:动态分析(跟踪变化)

更高级的方法是平台跟踪电池电量随时间的变化。页面上的 JavaScript 代码定期(例如,每 5 分钟)检查当前电量并将数据发送到服务器。

这允许创建设备的“放电图”。如果多个账户显示出完全相同的图表——这明显表明是从同一设备操作。

// 动态跟踪的代码示例
var batteryLog = [];

navigator.getBattery().then(function(battery) {
  // 页面加载时的第一次记录
  batteryLog.push({
    time: Date.now(),
    level: battery.level,
    charging: battery.charging
  });
  
  // 每 5 分钟进行一次检查
  setInterval(function() {
    batteryLog.push({
      time: Date.now(),
      level: battery.level,
      charging: battery.charging
    });
    
    // 将数据发送到服务器
    sendToServer(batteryLog);
  }, 300000); // 5 分钟
});

方法 3:跨浏览器跟踪

一些平台使用 Battery API 将用户在同一设备上不同浏览器中的活动关联起来。例如:

  • 用户通过 Chrome 登录 Instagram——电池 65%
  • 10 分钟后通过 Firefox 登录 TikTok——电池 64%
  • 再过 15 分钟通过 Edge 登录 Facebook——电池 63%

即使使用不同的浏览器和不同的代理,电池电量的同步变化也可能将这些会话关联为来自同一物理设备的活动。

方法 4:与其他指纹识别技术结合

Battery API 很少单独使用。平台将电池数据与其他指纹识别方法结合,以提高准确性:

指纹识别方法 如何与 Battery API 结合 威胁级别
Canvas 指纹 相同的 Canvas + 相同的电池 = 高概率匹配
WebGL 指纹 显卡参数 + 电池动态创建唯一设备配置文件
屏幕分辨率 稀有分辨率 + 独特电池 = 几乎 100% 识别
时区 时区与 IP 不匹配可能在电池匹配时加大怀疑
字体列表 独特的字体组合 + 电池有助于更准确地识别设备

在反检测浏览器中设置保护

现在我们进入实践——如何在流行的反检测浏览器中正确设置对 Battery API fingerprinting 的保护。我们将为 Dolphin Anty、AdsPower、Multilogin 和 GoLogin 提供逐步说明。

Dolphin Anty——设置 Battery API

Dolphin Anty 是套利者中最受欢迎的反检测浏览器之一,特别适用于 Facebook Ads 和 TikTok Ads。该浏览器具有内置的 Battery API 替换功能。

逐步设置:

  1. 打开 Dolphin Anty 并创建新配置文件(或打开现有配置文件进行编辑)
  2. 在配置文件设置中找到“指纹”或“Fingerprint”部分
  3. 滚动到“Battery API”或“电池”部分
  4. 选择 Battery API 的工作模式:
    • 真实(Real)——使用您真实电池的数据(对多账户操作危险!)
    • 噪声(Noise)——对真实数据添加随机偏差(不足以保护)
    • 关闭(Off)——阻止对 Battery API 的访问(可能看起来可疑)
    • 自定义(Custom)——允许设置自己的值(推荐)
  5. 选择“自定义”模式并设置参数:
    • 电池电量:随机值在 40% 到 95% 之间(避免 100%——这很可疑)
    • 充电状态:随机选择“charging”或“not charging”
    • 到放电的时间:根据电池电量自动计算
  6. 重要:为每个配置文件设置不同的 Battery API 值。不要对不同账户使用相同的值!
  7. 保存配置文件设置

Dolphin Anty 的建议: 使用“每次启动时随机化”(Randomize on each launch)功能。这将在每次启动配置文件时自动更改电池电量,模拟自然的电量变化。

还要启用与配置文件工作时间的同步——如果配置文件工作 2 小时,电池电量应逐渐降低,模拟设备的真实使用情况。

AdsPower——防止 Battery fingerprinting

AdsPower 在电子商务专家和与亚洲平台(AliExpress、Shopee、Lazada)合作的套利者中非常受欢迎。这里的 Battery API 设置略有不同。

逐步说明:

  1. 打开 AdsPower 并转到“浏览器配置文件”部分
  2. 创建新配置文件或编辑现有配置文件
  3. 在设置中找到“高级设置”→“硬件”选项卡
  4. 找到“Battery Status API”参数
  5. 可用选项:
    • 自动(Automatic)——AdsPower 自动生成逼真的值
    • 手动(Manual)——手动设置所有参数
    • 禁用(Disabled)——完全禁用 Battery API
  6. 建议选择“手动”以获得完全控制
  7. 设置参数:
    • 电池电量:45-90%(为不同配置文件变动)
    • 充电状态:在不同配置文件之间交替 true/false
    • 充电时间:如果充电 = true,设置逼真的时间(1800-7200 秒)
    • 放电时间:如果充电 = false,设置放电时间(3600-14400 秒)

AdsPower 的特点: 浏览器允许创建“设备配置文件”(device profiles),可以保存一组参数(包括 Battery API),并将其应用于多个配置文件。这很方便,但危险——不要将一个设备配置文件用于同一平台上的多个账户!

Multilogin——专业设置

Multilogin 是一款高端反检测浏览器,具有最先进的指纹保护功能。价格较高(从 $99/月),但提供最高级别的保护。

在 Multilogin 中设置 Battery API:

  1. 打开 Multilogin 并创建新配置文件(Mimic 或 Stealthfox)
  2. 在“硬件”部分找到“Battery Status”
  3. Multilogin 提供三种模式:
    • 真实(Real)——真实数据(不推荐)
    • 掩码(Mask)——通过自动生成进行替换
    • 阻止(Block)——完全阻止 API
  4. 选择“掩码”以替换数据
  5. 启用“动态电池模拟”选项——这是 Multilogin 的独特功能,可以模拟电池电量随时间的真实变化
  6. 设置模拟参数:
    • 起始电量:初始电量(50-95%)
    • 放电速率:每小时的放电百分比(2-8%,取决于“设备类型”)
    • 充电行为:设备在充电时的行为

Multilogin 还允许将 Battery API 与其他参数同步。例如,如果您模拟一台电池较弱的旧笔记本电脑,Multilogin 会自动设置更高的放电速率和更低的容量。

GoLogin——经济实惠的选择

GoLogin 是一个更实惠的替代方案(从 $24/月),具有基本但足够的保护功能。

在 GoLogin 中设置:

  1. 在 GoLogin 中创建或打开配置文件
  2. 转到“快速设置”→“高级”
  3. 找到“电池”部分
  4. 默认情况下,GoLogin 使用“噪声”模式——对真实数据添加随机偏差。这对严肃的多账户操作来说是不够的!
  5. 切换到“自定义”模式并为每个配置文件设置独特的值
  6. 使用“随机化”功能自动生成不同的值

GoLogin 的重要限制: 与 Multilogin 不同,GoLogin 没有动态电池模拟功能。电池电量在整个会话期间保持静态。这对那些跟踪电池随时间变化的平台(如 TikTok、Facebook)来说可能是可疑的。

Battery API 设置的通用建议

无论您选择哪个反检测浏览器,请遵循以下规则:

  • 每个配置文件的唯一性——永远不要对不同账户使用相同的 Battery API 值
  • 逼真的值——避免极端值(5% 或 100%)。最佳范围:40-90%
  • 与设备类型相符——如果模拟移动设备,请使用较小的电池容量。对于笔记本电脑——使用较大容量
  • 合理的放电时间——如果电量为 80%,到完全放电的时间不可能是 1 小时。这应该是 4-8 小时以保持真实
  • 交替充电状态——在不同配置文件之间更改“charging”和“not charging”状态
  • 定期更新——每 1-2 周更改配置文件中的 Battery API 值,模拟电池的自然老化

真实案例:Battery API 导致封禁的情况

我们来看一些来自套利者和 SMM 专家的真实案例,忽视 Battery API fingerprinting 导致了严重问题。

案例 1:15 个 Facebook Ads 账户的连锁封禁

情况: 一名套利者为销售养了 15 个 Facebook Ads 广告账户。使用 Dolphin Anty、高质量的住宅代理、独特的创意和着陆页。所有账户都通过了审核,已绑定银行卡,启动了测试活动。

错误: 在 Dolphin Anty 的设置中,所有配置文件的 Battery API 模式都保持为“真实”(默认)。所有 15 个账户都在一台 MacBook Pro 上工作。

结果: 在广告启动后的 3 天内,所有 15 个账户在 2 小时内被封禁。原因是 Facebook 检测到所有账户具有相同的 Battery API 指纹。即使在上诉后,账户也未恢复。损失约为 $3,000(账户养成成本 + 绑定的预算)。

结论: 始终为每个配置文件设置独特的 Battery API,即使您使用高质量的代理。

案例 2:SMM 代理机构的 20 个 Instagram 账户的阴影封禁

情况: 一家 SMM 代理机构管理 20 个客户的 Instagram 账户(商业账户,拥有 10k-50k 的粉丝)。使用 AdsPower,在一台办公电脑上进行两班工作(2 名 SMM 管理员)。

错误: Battery API 的设置为“自动”模式,但 AdsPower 为所有配置文件生成了非常相似的值(所有账户的电量在 75% 到 78% 之间)。

结果: 随着时间的推移(2 周内),所有账户的覆盖率开始下降。故事仅向 5-10% 的粉丝展示,而不是通常的 30-40%。帖子未能进入推荐。经典的阴影封禁。恢复花费了一个月——不得不暂停活动,更改所有指纹参数,使用移动代理。

结论: 不要依赖自动生成——检查 Battery API 的值是否在配置文件之间确实不同。

案例 3:因“可疑活动”封禁 TikTok Ads 账户

情况: 一名套利者在 TikTok Ads 上投放广告,使用 GoLogin 设置代理。账户已被养成、验证,并绑定了 $5,000 的企业卡。

错误: 在 GoLogin 中启用了 Battery API 的“噪声”模式,该模式对真实数据添加了小的随机偏差。问题是,套利者使用的笔记本电脑始终连接到电源(charging = true,level = 100%)。即使有“噪声”,这些数据仍然保持可疑的稳定性。

结果: TikTok 在 5 天内封禁了广告账户,理由是“检测到可疑活动”。上诉无效。不得不重新养一个新账户,但这次正确设置了 Battery API(“自定义”模式,具有定期变化的值)。

结论: “噪声”模式不足以提供保护。使用完整的替换(自定义/掩码)和逼真的变化值。

安全使用多账户操作的检查清单

总结并制定实用的检查清单,以保护自己免受 Battery API fingerprinting 和其他跟踪方法的影响。

设置反检测浏览器

  • ✅ 使用自定义/掩码模式进行 Battery API,而不是真实或噪声模式
  • ✅ 为每个配置文件设置独特的电池电量值(至少 10-15% 的差异)
  • ✅ 在配置文件之间交替充电状态(charging/not charging)
  • ✅ 如果浏览器支持动态模拟(Multilogin)——务必启用
  • ✅ 在每次启动配置文件时设置 Battery API 的自动更改
  • ✅ 检查其他指纹参数:Canvas、WebGL、AudioContext、字体列表
  • ✅ 为不同配置文件使用不同的 User-Agent 和屏幕分辨率

使用代理

  • ✅ 为关键平台(Facebook Ads、TikTok Ads)使用高质量的 住宅代理
  • ✅ 对于 Instagram 和 TikTok,考虑使用 移动代理——它们更少受到封禁
  • ✅ 一个代理 = 一个账户。不要对多个配置文件使用同一个 IP
  • ✅ 确保浏览器中的时区与代理的地理位置相符
  • ✅ 检查代理是否存在 WebRTC 和 DNS 泄漏

行为模式

  • ✅ 不要同时使用所有账户——在会话之间休息
```