multi-account-isolation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Multi-Account Isolation

多账号隔离

Keeping several of your own accounts from being tied together by a platform is not one problem, it is a stack of them. A perfect browser fingerprint fixes exactly one layer. Accounts far more often get linked by an IP, a shared cookie, a mismatched clock, or the same recovery phone number than by a canvas hash.
This skill is the checklist. For the code that implements the browser layer, see the anti-detect-browser skill.
Scope. This is about accounts you own, or accounts you operate with the holder's authorization - an agency running client profiles, a seller with several storefronts, a team whose ad accounts must not be cross-attributed. It is not about getting into accounts that are not yours, manufacturing fake accounts or engagement, or coming back from a ban you earned; see Acceptable use. Proxy URLs and API keys in the examples always come from the environment.
防止您的多个账号被平台关联并非单一问题,而是一系列问题的叠加。完美的浏览器指纹仅能解决其中一个层面的问题。相比Canvas哈希,账号更常因IP地址、共享Cookie、时钟不匹配或相同的恢复手机号而被关联。
本技能提供一份完整清单。如需实现浏览器层隔离的代码,请查看anti-detect-browser技能。
适用范围:本内容适用于您拥有的账号,或经账号持有者授权运营的账号——例如代理机构管理客户账号、卖家运营多个店铺、团队管理需避免交叉归因的广告账号。不适用于未经授权访问他人账号、伪造账号或互动数据,或规避因违规行为导致的封禁;详情请见可接受使用规范。示例中的代理URL和API密钥均来自环境变量。

The model: platforms link on many layers, and only need one

模型:平台通过多个层面关联账号,只需一个关联点即可

Linkage systems build a graph. Every account is a node; every shared signal is an edge. One strong edge (same payment card) or several weak ones (same /24 subnet + same screen resolution + same active hours) is enough to merge two nodes into "one operator".
So the goal is not "beat the fingerprint test". It is leave no edge. Getting nine layers right and the tenth wrong still merges the nodes.
关联系统构建一张关系图。每个账号是一个节点;每个共享信号是一条边。一条强关联边(如同一支付卡)或多条弱关联边(如同一/24子网 + 相同屏幕分辨率 + 相同活跃时段)就足以将两个节点合并为“同一操作者”。
因此,目标并非“通过指纹检测”,而是不留下任何关联边。即使九个层面都做对,第十个层面出错仍会导致节点合并。

Linkage surface

关联风险面

LayerWhat links the accountsHow to isolate
Browser fingerprintCanvas, WebGL/WebGPU, audio, fonts, screen, UA,
navigator
all identical across accounts
One antibrow profile per account - each draws its own real-device persona, frozen at creation
Cookies / storageA third-party or leftover first-party cookie seen under two logins;
localStorage
IDs; service-worker caches
Separate profile per account. Never "log out and log in as the other account" in one profile
IP addressSame exit IP, or same subnet, or an IP already burned by a banned accountOne proxy per account, sticky (not rotating) for logged-in sessions. Residential or mobile, not datacenter
Timezone / locale / geoBrowser clock in one country, exit IP in another - the single most common tell
geoip=True
(default): the exit IP is resolved through the proxy and timezone + WebRTC are written to match
WebRTCReal IP leaking past the proxy in ICE candidatesHandled in the kernel when the proxy is set; verify at browserleaks or whoer
Account metadataSame recovery email, same phone, same birthday, same name spelling, same profile photo fileDistinct per account. This is the edge people most often forget - no browser setting touches it
PaymentSame card, same PayPal, same payout bank account, same billing addressDistinct per account where the platform allows it; this is usually the hardest-to-hide edge
BehaviourAll accounts active in the same 20-minute window, identical posting cadence, same follow targets, copy-pasted contentStagger schedules and vary content. Nothing technical fixes this
Referral graphAccounts following, liking, or messaging each other early onAvoid cross-interaction, especially before accounts are aged
The bottom four rows are not solved by an anti-detect browser. If accounts keep getting linked with the browser layer correct, look there first.
层面账号关联因素隔离方法
浏览器指纹Canvas、WebGL/WebGPU、音频、字体、屏幕、UA、
navigator
等在多个账号中完全一致
为每个账号配置独立的反检测浏览器配置文件——每个配置文件生成专属的真实设备特征,并在创建时冻结
Cookie / 存储在两次登录中出现的第三方Cookie或遗留的第一方Cookie;
localStorage
ID;Service Worker缓存
为每个账号使用独立配置文件。绝不要在同一配置文件中“退出一个账号后登录另一个账号”
IP地址相同出口IP、同一子网,或IP已因封禁账号被标记为每个账号配置专属静态代理(而非动态轮换代理),登录会话期间保持固定。使用住宅或移动代理,而非数据中心代理
时区 / 区域设置 / 地理位置浏览器时钟显示为A国,出口IP却来自B国——这是最常见的关联信号启用
geoip=True
(默认设置):通过代理解析出口IP,并自动设置匹配的时区与WebRTC信息
WebRTC真实IP通过ICE候选地址绕过代理泄露设置代理时由内核处理;可在browserleaks或whoer上验证
账号元数据相同恢复邮箱、相同手机号、相同生日、相同姓名拼写、相同头像文件每个账号使用完全不同的信息。这是人们最常忽略的关联点——浏览器设置无法解决该问题
支付信息相同银行卡、相同PayPal账户、相同收款银行账户、相同账单地址在平台允许的情况下,每个账号使用独立的支付信息;这通常是最难隐藏的关联点
行为模式所有账号在同一20分钟窗口内活跃、相同发布节奏、相同关注目标、复制粘贴的内容错开运营时间,差异化内容。此问题无法通过技术手段解决
推荐关系图账号在早期阶段相互关注、点赞或发消息避免账号间交叉互动,尤其是在账号养号阶段
最后四个层面的问题无法通过反检测浏览器解决。如果浏览器层设置正确但账号仍被关联,请先检查这些层面。

The rule: one account, one of everything

规则:一个账号,一套独立配置

account  →  profile  →  fingerprint  →  proxy  →  timezone  →  identity data
   1     :     1      :       1        :    1    :     1      :        1
Any shared cell in that row is a potential edge. Profiles are unlimited and free on every antibrow plan, so there is never a reason to reuse one.
account  →  profile  →  fingerprint  →  proxy  →  timezone  →  identity data
   1     :     1      :       1        :    1    :     1      :        1
该行中任何共享项都可能成为关联点。所有反检测浏览器套餐均提供无限免费配置文件,因此绝无重复使用的理由。

Setup

配置步骤

Pair each account with its own profile and its own sticky proxy. The persona is drawn once and frozen, so the account sees the same device on every later launch - which is what a real user looks like.
typescript
import { AntiDetectBrowser } from 'anti-detect-browser'

const ab = new AntiDetectBrowser({ key: process.env.ANTI_DETECT_BROWSER_KEY })

const accounts = [
  { profile: 'shop-us-01', proxy: process.env.PROXY_US_1, tags: ['Windows 10', 'Chrome'] },
  { profile: 'shop-us-02', proxy: process.env.PROXY_US_2, tags: ['Apple Mac', 'Safari'] },
  { profile: 'shop-de-01', proxy: process.env.PROXY_DE_1, tags: ['Windows 10', 'Edge'] },
]

for (const a of accounts) {
  const { browser, page } = await ab.launch({
    profile: a.profile,               // isolated cookies, storage, login state
    proxy: a.proxy,                   // sticky, one per account
    fingerprint: { tags: a.tags },    // frozen at first launch, replayed after
    label: a.profile,                 // floating label so windows are tellable apart
  })
  // ... work this account, then close it ...
  await browser.close()
}
Python, same profile format and same on-disk identity:
python
import os
from antibrow import launch

with launch(
    profile="shop-us-01",
    proxy=os.environ["PROXY_US_1"],   # sticky proxy URL from the environment, never a literal
    geoip=True,            # timezone + WebRTC follow the proxy exit
    label="shop-us-01",
) as browser:
    page = browser.new_page()
    page.goto("https://example.com")
    print(browser.timezone, browser.public_ip)
为每个账号搭配专属配置文件和专属静态代理。设备特征仅生成一次并冻结,因此账号每次启动时都会看到相同的设备特征——这与真实用户的行为一致。
typescript
import { AntiDetectBrowser } from 'anti-detect-browser'

const ab = new AntiDetectBrowser({ key: process.env.ANTI_DETECT_BROWSER_KEY })

const accounts = [
  { profile: 'shop-us-01', proxy: process.env.PROXY_US_1, tags: ['Windows 10', 'Chrome'] },
  { profile: 'shop-us-02', proxy: process.env.PROXY_US_2, tags: ['Apple Mac', 'Safari'] },
  { profile: 'shop-de-01', proxy: process.env.PROXY_DE_1, tags: ['Windows 10', 'Edge'] },
]

for (const a of accounts) {
  const { browser, page } = await ab.launch({
    profile: a.profile,               // isolated cookies, storage, login state
    proxy: a.proxy,                   // sticky, one per account
    fingerprint: { tags: a.tags },    // frozen at first launch, replayed after
    label: a.profile,                 // floating label so windows are tellable apart
  })
  // ... work this account, then close it ...
  await browser.close()
}
Python版本,配置文件格式与本地存储的身份信息一致:
python
import os
from antibrow import launch

with launch(
    profile="shop-us-01",
    proxy=os.environ["PROXY_US_1"],   // sticky proxy URL from the environment, never a literal
    geoip=True,            // timezone + WebRTC follow the proxy exit
    label="shop-us-01",
) as browser:
    page = browser.new_page()
    page.goto("https://example.com")
    print(browser.timezone, browser.public_ip)

Proxy selection

代理选择

  • Sticky, not rotating. A logged-in session whose IP changes mid-flight looks like a hijacked session. Rotation belongs in scraping, not in account operation.
  • Residential or mobile for consumer platforms. Datacenter ranges are widely tagged.
  • Match the account's claimed location to the proxy, and keep it stable. An account that has always been in Ohio and suddenly appears in Vietnam is a stronger signal than any fingerprint.
  • Never share one exit across accounts, and do not reuse the exit of an account that was already banned.
  • 静态代理,而非动态轮换:登录会话中途IP变更会被视为劫持会话。动态轮换适用于爬虫,不适用于账号运营。
  • 面向消费平台使用住宅或移动代理:数据中心IP段已被广泛标记。
  • 代理需匹配账号声明的地理位置,并保持稳定:一直位于俄亥俄州的账号突然出现在越南,这比任何指纹信号都更强。
  • 绝不为多个账号共享同一出口IP,也不要复用已封禁账号的出口IP。

Fingerprint variety

指纹多样性

Do not give every account
['Windows 10', 'Chrome']
. Real populations are mixed. Vary the tags across the fleet -
Apple Mac
,
Android
,
Edge
,
Mobile
- and let each account keep its own draw forever.
不要为所有账号设置
['Windows 10', 'Chrome']
。真实用户群体的设备特征是多样化的。在账号群中差异化设置标签——如
Apple Mac
Android
Edge
Mobile
——并让每个账号永久保留专属的设备特征。

Warm-up

养号阶段

New accounts that immediately do the thing you made them for are the easiest to catch. Age each account with ordinary behaviour before it does anything of value: browse, read, follow a few unrelated things, come back the next day. Days, not minutes. Warm-up is a behaviour problem, so no browser feature substitutes for it.
新账号刚创建就立即执行核心操作最容易被检测到。在进行有价值的操作前,先通过常规行为养号:浏览内容、阅读文章、关注几个无关账号、次日再次登录。养号需持续数天,而非数分钟。养号属于行为层面问题,没有浏览器功能可以替代。

Verify before you trust the setup

验证配置是否可靠

Run a fresh profile against a detection suite through its own proxy and confirm the layers agree:
Check specifically: does the reported timezone match the exit IP's country, does the WebRTC candidate show only the proxy, and does the canvas hash stay the same across two launches of the same profile (a changing hash is itself a flag).
通过专属代理在检测套件上测试新配置文件,确认各层面信息一致:
  • CreepJS - 跨层面一致性检测,包括工作线程与主线程
  • whoer.net - 快速查看IP、时区与区域设置是否匹配
  • browserleaks.com/webrtc - 检测真实IP是否绕过代理泄露
  • pixelscan.net - 检测IP与指纹的一致性
  • npx liarjs
    (liarjs.dev) - 约40条开源一致性规则,可在CI中运行
需重点检查:报告的时区是否与出口IP所在国家匹配,WebRTC候选地址是否仅显示代理IP,同一配置文件两次启动后的Canvas哈希是否保持一致(哈希变化本身就是一个标记)。

Troubleshooting: accounts still getting linked

故障排查:账号仍被关联

Work down in this order - the cheap layers first, because they are the ones usually at fault:
  1. Two accounts in one profile? Check that no profile name was reused.
    list_profiles
    or
    ~/.anti-detect-browser/
    .
  2. Shared or recycled IP? Confirm each account's
    public_ip
    is distinct and that none belonged to a banned account.
  3. Timezone mismatch? Print
    browser.timezone
    and
    browser.public_ip
    and confirm they agree.
  4. Shared account metadata? Recovery email, phone, payout account, billing address - the most common real cause.
  5. Behavioural overlap? Same active hours, same content, accounts interacting with each other.
  6. Only then suspect the fingerprint - and verify it with the tools above rather than assuming.
按以下顺序排查——先检查低成本层面,因为这些通常是问题根源:
  1. 是否两个账号共用一个配置文件? 检查是否重复使用配置文件名。可使用
    list_profiles
    命令或查看
    ~/.anti-detect-browser/
    目录。
  2. 是否共享或复用IP? 确认每个账号的
    public_ip
    唯一,且未被用于已封禁账号。
  3. 是否时区不匹配? 打印
    browser.timezone
    browser.public_ip
    ,确认两者一致。
  4. 是否共享账号元数据? 恢复邮箱、手机号、收款账户、账单地址——这是最常见的真实原因。
  5. 是否行为重叠? 相同活跃时段、相同内容、账号间相互互动。
  6. 最后再怀疑指纹问题——先使用上述工具验证,而非直接假设。

What this cannot do

本工具的局限性

  • It does not make a banned account come back.
  • It does not hide a shared payment instrument or a shared payout account from a platform that checks them.
  • It does not fix content or behaviour that a platform would penalise anyway.
  • It does not defeat identity verification - a document check is not a fingerprint problem.
  • 无法恢复已封禁的账号。
  • 无法向平台隐藏共享支付工具或共享收款账户。
  • 无法修复平台本就会处罚的内容或行为。
  • 无法绕过身份验证——文档验证不属于指纹问题。

What the runtime touches, and how to check it

运行时会访问的内容及检查方法

Running accounts through any tool means handing that tool session cookies and proxy credentials, so it is fair to ask what the runtime does with them. For antibrow:
ArtifactWhere it livesWho sees it
Cookies,
localStorage
, login state
~/.anti-detect-browser/<profile>/
on your disk
Local. Cloud profile sync is a separate paid-plan feature - check whether it is on before assuming a profile stays on the machine
Persona (
persona.json
)
same profile directory, written once and frozenLocal
Proxy URL and its credentialspassed to the kernel at launch; answered in the network stack (HTTP 407 / SOCKS5 RFC 1929) so no extension holds themThe kernel process and your proxy provider
API keyyour environment, or
~/.antibrow/license.key
Exchanged with
antibrow.com
for a short-lived license token, roughly once a day
The kernel is a closed-source Chromium build - that is the tradeoff for spoofing living in C++ rather than in an injectable script - so verify behaviour rather than take it on faith:
bash
python -m antibrow info          # kernels, profiles, license state, cache dir
python
browser.plan.redacted_args()     # exact kernel command line, secrets masked - safe to paste in a bug report
Point the whole thing at a proxy you can read logs on, or at a local MITM proxy, and watch what leaves the machine during a launch and a browsing session. Pin the SDK version and check the published hash (
npm view anti-detect-browser@2.2.0 dist.integrity
) so the code being audited is the code that runs. If a deployment must not phone home at all, this tool is the wrong choice: license verification is compiled into the kernel and there is no offline mode.
通过任何工具管理账号意味着将会话Cookie和代理凭据交给该工具,因此您有权了解运行时的处理方式。对于anti-detect-browser:
数据项存储位置可访问对象
Cookie、
localStorage
、登录状态
本地磁盘的
~/.anti-detect-browser/<profile>/
目录
仅本地可访问。云配置文件同步是付费套餐的单独功能——在假设配置文件仅存储在本地前,请确认该功能是否开启
设备特征文件(
persona.json
同一配置文件目录,仅生成一次并冻结仅本地可访问
代理URL及凭据启动时传递给内核;在网络栈中处理(HTTP 407 / SOCKS5 RFC 1929),因此无扩展程序会持有这些信息内核进程与您的代理提供商
API密钥您的环境变量,或
~/.antibrow/license.key
文件
每日与
antibrow.com
交换一次短期授权令牌
内核是闭源的Chromium构建——这是为了将指纹伪装逻辑放在C++层而非可注入脚本中的权衡,因此请通过行为验证而非盲目信任:
bash
python -m antibrow info          # kernels, profiles, license state, cache dir
python
browser.plan.redacted_args()     # exact kernel command line, secrets masked - safe to paste in a bug report
将整个工具指向您可查看日志的代理,或本地MITM代理,观察启动和浏览会话期间的网络请求。固定SDK版本并检查发布哈希(如
npm view anti-detect-browser@2.2.0 dist.integrity
),确保审计的代码与运行的代码一致。如果部署要求完全禁止联网,本工具并非合适选择:授权验证已编译进内核,无离线模式。

Acceptable use

可接受使用规范

Managing your own accounts across platforms, running client accounts with authorization, testing your own anti-fraud stack, and scraping public data are the intended uses. Bulk account-creation abuse, credential stuffing, evading a ban you were given for a policy violation, and automating systems you have no authorization to access are out of scope. Complying with the terms of the platforms being used is the operator's responsibility.
本工具的预期用途包括:跨平台管理自有账号、经授权运营客户账号、测试自有反欺诈系统、抓取公开数据。批量创建账号滥用、凭据填充、规避因违规行为导致的封禁、自动化访问未经授权的系统均不属于适用范围。遵守所使用平台的条款是操作者的责任。

Related Skills

相关技能

  • anti-detect-browser - the SDK, profiles, fingerprints, proxies, and REST API that implement the browser layer
  • browser-mcp-agent - MCP server mode, for letting an AI agent drive an isolated profile itself
  • anti-detect-browser - 实现浏览器层隔离的SDK、配置文件、指纹、代理及REST API
  • browser-mcp-agent - MCP服务器模式,允许AI Agent直接驱动隔离的配置文件