您好,有什么可以帮您?
查阅文档、了解 API 用法、配置指纹浏览器。支持 Windows / Mac / Android / iPhone 多平台模拟,30+ 维度指纹保护。
📚 浏览文档分类
选择感兴趣的主题,快速找到所需内容
🔥 热门文档
最常被查阅的内容
🚀 快速开始
幻影浏览器基于 Chromium,支持通过图形界面或 API 创建多个独立浏览器环境,每个环境有独立的指纹、代理和存储空间。
启动步骤
下载并安装
下载安装包,按向导完成安装,首次启动会自动初始化数据库。
登录账户
使用账户登录。API 调用需处于已登录状态,同时提供 API Key。
创建分组
在「窗口管理」页面创建分组,记录 group_id(API 创建配置时需要)。
获取 API Key
进入「API管理」页面,点击生成 API Key,用于所有 API 请求的身份验证。
发起第一个请求
向 POST /api/browsers/profiles 发送请求,创建第一个浏览器配置。
第一个 API 请求
下一步
📦 下载与安装
系统要求
- Windows 10 / 11(64位)
- 内存:4GB 以上(推荐 8GB+)
- 磁盘空间:2GB 以上
安装步骤
下载安装包
从官方网站下载最新版本的安装包(.exe)。
运行安装程序
双击安装包,按照向导提示完成安装。
首次启动
启动程序,系统自动初始化本地数据库和 Chrome 内核。
🖥️ 创建浏览器窗口
在主界面点击「新建窗口」,选择平台、配置指纹和代理后保存,即可创建新的浏览器配置。也可通过 API 批量创建。
支持的平台
| 平台 | 适用场景 | 特点 |
|---|---|---|
| Windows 10 / 11 | 通用场景 | 兼容性最佳,推荐默认选择 |
| Mac | 模拟苹果用户 | Safari 风格 UA |
| Android | 移动端/社交媒体 | 自动生成手机型号,开启开发者工具 |
| iPhone | iOS/高端用户模拟 | 自动生成 iPhone 型号 |
🔐 指纹配置说明
幻影浏览器支持 30+ 维度指纹保护,防止被网站追踪识别。
| 指纹类型 | 推荐模式 | 说明 |
|---|---|---|
| Canvas | noise | 在 Canvas 渲染中注入随机噪声 |
| WebGL | noise | WebGL 渲染器信息噪声保护 |
| WebGPU | noise | GPU 信息随机化 |
| AudioContext | noise | 音频处理指纹噪声 |
| ClientRects | noise | 元素位置偏移噪声 |
| 字体指纹 | noise | 字体列表随机化 |
| WebRTC | replace | 替换真实 IP,防止泄露 |
| 媒体设备 | noise | 摄像头/麦克风设备 ID 噪声 |
| JA4 | noise | TLS 指纹随机化 |
noise 模式,每个实例都会生成独一无二的指纹值。验证指纹效果
启动浏览器后访问以下网站验证:
- bot.sannysoft.com — 自动化检测
- browserleaks.com — 全面指纹检测
- fingerprintjs.com/demo — 指纹唯一性
🌐 代理 IP 配置
详见 代理 IP 说明文档,支持 HTTP、HTTPS、SOCKS5 以及平台代理。
📂 分组管理
分组用于对浏览器配置进行归类管理。创建分组后可获取 group_id,API 创建配置时需要传入该值。
group_id 是必填参数,必须使用真实存在的分组 ID,否则创建失败。方式一:通过界面查看 group_id
打开幻影浏览器
确保已登录账号。
进入窗口管理页面
点击左侧「窗口管理」。
查看分组 ID
分组名称旁边的数字即为 group_id,填入脚本中 GROUP_ID = 1(替换为你的数字)。
方式二:通过 API 获取分组列表
401,请检查:① 幻影浏览器是否已登录;② API Key 是否正确;③ 端口号是否与「API端口配置」中的「自动化API端口」一致。📡 API 概述
幻影浏览器提供完整的 RESTful API,运行在本地,所有数据不经过云端,保证隐私安全。
基本信息
| 项目 | 说明 |
|---|---|
| 基础 URL | http://127.0.0.1:{YOUR_PORT}/api(端口见 API & MCP → API端口配置) |
| 协议 | HTTP/1.1 · RESTful |
| 数据格式 | JSON(Content-Type: application/json) |
| 认证方式 | Bearer Token |
主要端点
data.id 即 profile_id)data.http 调试地址)msg.list[],含 group_id)— 不知道分组 ID?可用此接口查询,也可在幻影指纹浏览器「项目管理」页面直接查看分组旁的数字统一响应格式
🔑 认证方式
双重认证机制
API 采用双重认证,需同时满足:
- ✅ 幻影浏览器应用处于 已登录 状态
- ✅ 请求头携带有效的 API Key
401 Unauthorized。获取 API Key
打开 API 管理页面
主界面顶部导航点击「API管理」。
生成 API Key
点击「生成 API Key」,复制密钥妥善保存。
在请求头中使用
添加到 Authorization 请求头。
请求头格式
Python 示例
🤖 浏览器管理 API
启动浏览器
invalid character '<' looking for beginning of value 错误。同时需要在请求头中提供认证信息。invalid character '<' looking for beginning of value 错误,请检查:1. 是否使用了 POST 请求
2. 是否添加了
Authorization: Bearer YOUR_API_KEY 头3. 接口路径是否正确:
/api/browsers/launch/{id}Query 参数说明
| 参数名 | 默认值 | 说明 |
|---|---|---|
headless | "false" | "true" = 无界面后台运行(省资源,适合服务器);"false" = 显示窗口(调试推荐) |
showCheckPage | "true" | "true" = 启动后展示指纹/代理检测页面;"false" = 直接进入,跳过检测 |
args | — | 追加 Chrome 启动参数,JSON 数组字符串,如 ["--window-size=1280,720","--window-position=0,0","--disable-blink-features=AutomationControlled"] |
停止浏览器进程
删除浏览器配置
获取分组列表
data.http 端口可直接用于 DrissionPage / Selenium / Playwright / Puppeteer 接入远程调试。➕ 创建浏览器配置 API
点击查看《API 创建配置详细文档》→
接口信息
| 项目 | 说明 |
|---|---|
| 请求方式 | POST |
| 接口路径 | /api/browsers/profiles |
| Content-Type | application/json |
| 最少参数 | 仅需 group_id |
最简示例
常用参数
| 参数 | 必填 | 说明 |
|---|---|---|
group_id | 必填 | 分组 ID,在窗口管理页面或 GET /api/browsers/groups 中查看 |
name | 可选 | 配置名称,默认自动生成(含时间戳) |
remark | 可选 | 备注信息 |
browser_config.platform | 可选 | Windows 11 / Windows 10 / Mac / Android / iPhone,默认 Windows 11 |
browser_config.canvas | 自动 | Canvas 指纹:noise(推荐)/ real |
browser_config.webrtc | 自动 | WebRTC:replace(推荐,防止真实IP泄露)/ real / disabled |
browser_config.systemSpoofing | 自动 | 系统信息伪装:enabled / disabled |
proxy_config.type | 可选 | 代理类型:Directly(直连)/ Http / Https / Socks5 |
proxy_config.proxyMode | 可选 | custom(自定义填 host/port)/ platform(使用平台代理,需填 platformProxyId) |
proxy_config.host | 可选 | 代理服务器地址(proxyMode=custom 时填写) |
proxy_config.port | 可选 | 代理端口(字符串格式,如 "8080") |
other_config.cloudSync | 可选 | 云同步,默认 true |
other_config.blockImages | 可选 | 阻止图片加载,默认 false(设为 true 可提升速度) |
other_config.blockVideos | 可选 | 阻止视频加载,默认 false |
other_config.multiWindow | 可选 | 多窗口模式,默认 false |
🐉 Python + DrissionPage 接入
准备工作(必看)
① 幻影浏览器已打开并已登录账号(不登录 API 无法使用)
② 获取 API Key:点击顶部「API管理」页面 → 生成 API Key → 复制备用
③ 确认 API 端口:点击「API & MCP → API端口配置」查看「自动化API端口」,默认是
36108④ 确认分组 ID:有两种方式获取:
• 方式一(界面查看):在幻影指纹浏览器「项目管理」或「窗口管理」页面,分组名称旁边的数字即为
group_id• 方式二(API 获取):调用
GET /api/browsers/groups 接口,返回所有分组列表及对应 ID(代码获取见下方「分组管理」章节)
安装依赖
打开命令行(Windows 按 Win+R 输入 cmd),运行:
① 完整基础示例(含详细注释)
下面是一个完整的示例,初学者修改 YOUR_API_KEY 和 group_id 后可直接运行:
📦 导入 & 配置(只需修改这里)
•
requests:负责和幻影浏览器的 API 通信(创建配置、启动、停止),就像你浏览器访问网页一样,只是在代码里发送请求。•
DrissionPage:负责控制已经启动的浏览器,模拟人的操作(点击、输入、抓取内容等)。关系:requests 负责"召唤浏览器",DrissionPage 负责"操控浏览器"。
第一步:创建浏览器配置
创建成功后系统自动生成指纹,返回唯一的 profile_id,后续启动/删除都需要用到它。
第二步:启动浏览器,获取调试端口
幻影启动真实 Chrome 进程,返回调试端口。debug_port 就是 DrissionPage 的"遥控器入口"。
幻影未运行时调用启动接口会立即失败(ConnectionError)。请先双击桌面图标打开幻影浏览器,登录后再运行脚本。
本文档示例中
BASE_URL = "http://127.0.0.1:36108/api"(完整地址,含 /api 路径)。如果你的脚本里只存了端口号(如
PORT = "36108"),则启动接口地址要写成:url = f"http://127.0.0.1:{PORT}/api/browsers/launch/{profile_id}"两种写法结果完全相同,关键是不要重复或遗漏
/api 这段路径。🚫 报错
invalid character '<' looking for beginning of value?这说明服务器返回了 HTML 页面(404 错误页)而非 JSON,根本原因是接口路径写错了。
幻影浏览器正确路径:
/api/browsers/launch/{id}(browsers 有 s,用 launch)❌ 错误写法(AdsPower 等其他平台):
/api/browser/start/{id}注意:
browser(单数)≠ browsers(复数),start ≠ launch!
第三步:DrissionPage 连接到已启动的浏览器
是"连接"到幻影已经启动的浏览器,不是重新打开一个新的浏览器窗口。
1.
ChromiumOptions() — 创建一个"连接配置对象",相当于填写一张"我要连接哪个浏览器"的表单。2.
set_local_port(debug_port) — 在表单上填入端口号,告诉 DrissionPage:去 127.0.0.1:端口 这个地方找浏览器。3.
ChromiumPage(addr_or_opts=co) — 拿着这张表单去连接,连接成功后 page 就代表那个浏览器窗口,之后所有操作都用 page.xxx() 来执行。
第四步:执行业务操作
•
"css:#kw" → 找 id="kw" 的元素(# 代表 id)•
"css:.class-name" → 找 class="class-name" 的元素(. 代表 class)•
"xpath://button[text()='提交']" → 找文字是"提交"的按钮不知道选择器怎么写?在浏览器里右键元素 → 检查 → 右键该元素代码 → Copy → Copy selector,粘贴到
page.ele() 里即可。
第五步:清理(必须执行)
不清理的话浏览器进程和配置数据会一直占用系统资源。想保留配置下次继续用,可以不调用删除配置那行。
1.
page.quit() — 断开 DrissionPage 的控制连接(但浏览器进程还在运行)2.
DELETE /browsers/{id} — 停止浏览器进程(关掉那个 Chrome 窗口)3.
DELETE /browsers/profiles/{id} — 删除配置数据(从幻影里彻底删除这条记录)如果想下次复用这个浏览器配置(保留历史记录、Cookie 等),注释掉第 3 行即可。
② 多线程并发(同时跑多个浏览器)
当你需要同时操作多个浏览器窗口时,使用多线程。下面的例子演示同时启动3个浏览器,每个使用不同代理:
try/finally 包裹,这样即使中间出错,也能保证最后的清理代码(关闭浏览器、删除配置)一定会执行,不会留下"僵尸进程"。就是让电脑同时做多件事,比如一次性开3个浏览器同时工作,而不是一个一个排队等。
代码结构说明:
•
try: — 正常业务逻辑写在这里•
except Exception as e: — 出错时打印错误信息,不让程序崩掉•
finally: — 不管成功还是失败,这里的代码都会执行(专门放清理代码)•
t.start() — 启动线程(开始并行运行)•
t.join() — 等待该线程结束(主程序要等所有线程都跑完才继续)
③ 窗口大小 & 多线程自动排列
多线程时每个浏览器窗口的位置通过 --window-size 和 --window-position 参数控制,按屏幕宽高自动分列铺满,互不重叠。
多线程同时启动多个浏览器时,如果不设置位置,所有窗口会重叠在屏幕同一个地方。
calc_positions(n) 函数会根据屏幕大小,自动像贴瓷砖一样把窗口均匀铺满屏幕。关键启动参数说明:
•
--window-size=宽,高 — 每个浏览器窗口的像素尺寸,如 500,500•
--window-position=x,y — 窗口左上角距屏幕左/上边缘的像素距离•
--disable-blink-features=AutomationControlled — 隐藏自动化特征,防止网站检测到脚本•
--disable-dev-shm-usage — 防止内存不足导致崩溃(Windows 也加上,无害)
位置计算函数(复用于所有线程)
在多线程中使用(启动时传入对应位置)
④ 常用操作速查
下面是 DrissionPage 最常用的操作,遇到不会的直接复制对应代码即可:
🐍 Python + Selenium 接入
准备工作
② 获取 API Key:点击「API管理」页面 → 生成 API Key → 复制
③ 确认 API 端口:「API & MCP → API端口配置」查看,默认
36108
安装依赖
① 完整基础示例(含详细注释)
Selenium 的连接方式是 "Attach 模式":不是自己启动 Chrome,而是连接幻影已经启动的 Chrome 进程。关键在 options.debugger_address 这一行。
📦 导入 & 配置(只需修改这里)
第一步:创建浏览器配置
告诉幻影要创建什么样的浏览器环境(指纹、代理等),系统自动生成指纹,返回 profile_id。
第二步:启动浏览器,获取调试端口
幻影启动真实 Chrome 进程并开放调试端口,debug_port 是 Selenium 接管浏览器的"入口"。
幻影未运行时调用启动接口会立即失败(ConnectionError)。请先双击桌面图标打开幻影浏览器,登录后再运行脚本。
同时确认
BASE_URL 端口号正确:在幻影「API & MCP → API端口配置」中查看。
本文档示例中
BASE_URL = "http://127.0.0.1:36108/api"(完整地址,含 /api 路径)。如果你的脚本里只存了端口号(如
PORT = "36108"),则启动接口地址要写成:url = f"http://127.0.0.1:{PORT}/api/browsers/launch/{profile_id}"两种写法结果完全相同,关键是不要重复或遗漏
/api 这段路径。🚫 报错
invalid character '<' looking for beginning of value?这说明服务器返回了 HTML 页面(404 错误页)而非 JSON,根本原因是接口路径写错了。
幻影浏览器正确路径:
/api/browsers/launch/{id}(browsers 有 s,用 launch)❌ 错误写法(AdsPower 等其他平台):
/api/browser/start/{id}注意:
browser(单数)≠ browsers(复数),start ≠ launch!
第三步:Selenium 连接到已运行的浏览器(Attach 模式)
只设置 debugger_address,格式为 127.0.0.1:端口(不带 http://),不要设置 binary_location。
第四步:执行业务操作
第五步:清理(必须执行)
想保留配置下次继续用,可以不调用删除配置那行。
② 多线程并发
每个线程独立创建一个浏览器实例,互不干扰。每个线程的 profile_id 和 driver 都是独立的:
③ 窗口大小 & 多线程自动排列
多线程时每个浏览器窗口的位置通过 --window-size 和 --window-position 参数控制,按屏幕宽高自动分列铺满,互不重叠。
位置计算函数(复用于所有线程)
在多线程中使用(启动时传入对应位置)
④ 常用操作速查
🎭 Playwright 接入
准备工作
② 获取 API Key:点击「API管理」页面 → 生成 API Key → 复制
③ 确认 API 端口:「API & MCP → API端口配置」查看,默认
36108
① Python 接入(详细注释版)
· DrissionPage 用 HTTP 端口(
data.http)连接,上手更简单· Playwright 用 WebSocket 地址(
data.ws)连接,功能更强,支持截图、网络拦截等高级特性· 两者都是"接管"幻影已启动的浏览器,而不是自己新建一个
② Node.js 接入(详细注释版)
Node.js 中所有网络请求都是"异步"的(不会阻塞程序等待结果)。
async function 声明一个异步函数;await 放在异步操作前,表示"等这一步完成再继续"。简单理解:加了
await 就变成了从上到下顺序执行,像 Python 一样直观。
③ 常用操作速查(Python)
🎪 Puppeteer 接入
· 两者功能非常相似,都是 Node.js 的浏览器自动化库
· Puppeteer 是 Google 官方出品,历史更久,API 更接近 Chrome 原生;Playwright 是微软出品,支持更多浏览器(Firefox/Safari)
· 接管幻影浏览器时,两者都用 WebSocket 地址,但 Puppeteer 用
puppeteer.connect,Playwright 用 chromium.connectOverCDP
准备工作
② 幻影浏览器已打开并已登录
③ 获取 API Key:点击「API管理」页面 → 生成 API Key → 复制
④ 确认 API 端口:「API & MCP → API端口配置」查看,默认
36108
安装依赖
① 完整基础示例(含详细注释)
Puppeteer 使用 puppeteer.connect 而不是 puppeteer.launch。区别是:launch 是自己新建一个 Chrome 进程,connect 是通过 WebSocket 接管幻影已经启动的 Chrome 进程,两者的浏览器对象用法完全相同。
② 多实例并发(同时跑多个浏览器)
使用 Promise.all 让多个任务同时执行,比串行快很多。每个任务独立创建和管理自己的浏览器:
③ 常用操作速查
🌐 JavaScript (fetch / axios) 接入
· 纯 JS(fetch/axios)只调用幻影的 HTTP API,负责"管理浏览器生命周期"(创建/启动/停止/删除)
· 如果只需要控制浏览器开关、不操控页面内容,用纯 JS 最轻量
· 如果需要自动化点击/输入/截图,把启动后返回的
ws 地址传给 Puppeteer/Playwright 即可组合使用适合场景:油猴脚本、网页前端控制、Node.js 管理脚本、与其他自动化工具配合
准备工作
② 获取 API Key:点击「API管理」页面 → 生成 API Key → 复制
③ 确认 API 端口:「API & MCP → API端口配置」查看,默认
36108④ 确认分组 ID:窗口管理页面,分组名称旁边的数字就是
group_id
① 浏览器 fetch(油猴脚本 / 页面中调用)
如果你想在网页中通过 JavaScript 控制幻影浏览器(比如写油猴脚本),使用 fetch 方式。
注意:需要幻影 API 允许跨域(CORS),如果报跨域错误请改用下方的 Node.js 方式。
② Node.js axios(推荐方式,适合脚本和后端)
用 axios.create 创建一个配置好的实例,以后所有请求都通过它发送,不用每次都重复写 BaseURL 和请求头:
③ API 接口速查表
所有常用接口一览,方便查找:
| 方法 | 路径 | 说明 | 关键参数 |
|---|---|---|---|
| GET | /groups/list | 获取所有分组 | — |
| POST | /browsers/profiles | 创建浏览器配置 | group_id(必填) |
| GET | /browsers/profiles | 获取配置列表 | page, pageSize |
| POST | /browsers/launch/:id | 启动浏览器 | ?headless=false |
| DEL | /browsers/:id | 停止浏览器进程 | 路径中的 :id |
| DEL | /browsers/profiles/:id | 删除配置数据 | 路径中的 :id |
ws 字段可直接传给 Puppeteer 的 browserWSEndpoint 或 Playwright 的 connectOverCDP,实现"JS 调 API 启动 + 自动化框架操控"的组合用法。🌐 代理 IP 说明
支持的代理类型
| 类型 | 参数值 | 适用场景 |
|---|---|---|
| 直连 | Directly | 本地测试、无需代理 |
| HTTP | Http | 普通 HTTP 代理 |
| HTTPS | Https | 加密 HTTP 代理 |
| SOCKS5 | Socks5 | 高隐私、支持 UDP |
| 平台代理 | platform | 幻影平台内置代理服务 |
API 配置示例
🏪 平台代理使用
使用平台代理时,在 proxy_config 中设置 proxyMode: "platform" 并传入 platformProxyId。
❓ 常见问题
API 相关
API 请求返回 401,怎么办?▾
请检查:① 幻影浏览器是否处于登录状态;② Authorization: Bearer YOUR_KEY 格式是否正确;③ API Key 是否过期,可在 API 管理页重新生成。
为什么只需要提供 group_id?▾
系统为所有参数设置了合理默认值,并自动生成指纹噪声值、UA、设备信息等。只需 group_id 即可快速创建完整的浏览器配置。
API 服务默认监听哪个端口?▾
API 端口可自定义,在 幻影浏览器 → API & MCP → API端口配置 中查看「自动化API端口」的实际值。
自动化相关
Selenium 连接时报 session not created?▾
确保浏览器已通过 POST /api/browsers/launch/:id 成功启动,然后使用返回的 data.http 提取端口号(split(":"))连接。不要使用新建 ChromeDriver 实例的方式。
移动端平台会自动打开开发者工具吗?▾
是的,Android 和 iPhone 平台会自动添加 --auto-open-devtools-for-tabs 参数,方便调试移动端布局。
创建或启动浏览器超时(ReadTimeout)怎么办?▾
- 创建配置超时(90秒):代理 IP 连通性差或 API 服务器繁忙。检查代理是否可用、网络是否正常。
- 启动超时(180秒):第一次启动需加载内核,较慢;或代理 IP 连接不稳定,指纹服务无响应。更换代理 IP 重试。
- 如大量超时,检查端口号是否正确(API & MCP → API端口配置)、幻影浏览器是否已登录。
为什么删除配置 API 的响应格式和其他接口不同?▾
DELETE /api/browsers/profiles/{id} 返回 {"code": 200, "msg": "..."},而创建/启动等接口返回 {"success": true, "data": {...}}。
正确判断方式:
指纹相关
如何验证指纹伪装是否生效?▾
启动浏览器后访问 bot.sannysoft.com 或 browserleaks.com 进行检测。
WebGL 配置会根据平台自动调整吗?▾
- Windows/Android:
Google Inc. (Intel/AMD/NVIDIA) - Mac:
Apple Inc. (Intel) - iPhone:
Apple GPU
浏览器版本是 131 还是 132?▾
支持 Chrome 131 和 132,系统会随机选择一个版本号并添加随机子版本号(0-200)。
📝 更新日志
v1.0.0 · 2025-01-08
- 支持多平台:Windows 10/11、Mac、Android、iPhone
- 完整指纹自动生成系统(30+ 维度)
- 移动端手机型号配置支持
- 移动端自动开启开发者工具
- RESTful API 支持
- Bearer Token 双重认证机制
- 代理 IP:直连 / HTTP / HTTPS / SOCKS5 / 平台代理