自动化 Dolphin{anty}:API 能做什么,又够不到什么
Marta Kowalczyk
代理商运营负责人
关于 Dolphin Anty API 有两件事同时为真,而它们把你往相反的方向拉。
它是市面上文档做得比较好的指纹浏览器 API 之一——真实的端点、真实的请求体、四种语言的可运行代码示例,还公开了速率限制。他们自己的用户也这么说;官网上有一条评价称赞他们的支持在有人卡住时直接发来"一段能跑的代码",并指出很多同类产品根本没有像样的 API 文档。
而它是一套关于浏览器的 API。它能寻址的一切都是浏览器对象。这不是什么该被抱怨的局限——这就是这个产品的定义。但它划出了一条非常干净的线,而这条线是这篇文章里最有用的东西。
**快速答案:**Dolphin Anty API 创建浏览器环境、描述它们的指纹、挂上代理 IP、启动和停止它们,并把一个 DevTools 端口交给你,让你把 Puppeteer 或 Playwright 挂上去。它没有广告系列、预算或花费这样的对象,因为这些不是浏览器层面的概念。广告系列的自动化发生在各广告平台自己的 API 上,那是另一层。(如果这两个 Dolphin 产品你还分不清,先看 Dolphin{anty} 对比 Dolphin{cloud}。)
下面所有内容都是 2026 年 8 月 29 日从 docs.dolphin-anty.com 读到的。他们的文档会变;写脚本那天自己打开看一遍。
有两套 API,人卡住的地方就在这里
最常见的一个混淆:Dolphin{anty} 暴露的是一套远程 API 和一套本地 API,它们回答的是不同的问题。
| 远程 API | 本地 API | |
|---|---|---|
| 基础地址 | https://dolphin-anty-api.com | http://localhost:3001(默认) |
| 认证 | Authorization: Bearer API_TOKEN | POST /v1.0/auth/login-with-token |
| 干什么 | 创建和描述环境,提供指纹数据 | 启动和停止环境,交给你一个 DevTools 端口 |
| 前提 | 本地不需要跑任何东西 | 应用在运行且已授权,且在同一台机器上 |
记忆模型:远程 API 决定一个环境是什么,本地 API 把它打开。
对着 dolphin-anty-api.com 去启动一个环境,什么也不会发生。对着 localhost:3001 去创建一个环境,什么也不会发生。两边都写在文档里,两边都猜不出来。
远程 API:创建一个环境
创建环境是往 https://dolphin-anty-api.com/browser_profiles 发一个 POST,带 Bearer token 和一个 JSON 请求体。
在写请求体之前,有两个辅助端点值得先知道,因为它们能让你不必去编那些现实中根本不存在的指纹值:
User agent —— GET https://dolphin-anty-api.com/fingerprints/useragent?browser_type=anty&browser_version=140&platform=windows,其中 platform 可取 MacOS、Windows 或 Linux。需要 Authorization: Bearer API_TOKEN 请求头。
WebGL —— GET https://dolphin-anty-api.com/fingerprints/webgl?browser_type=anty&platform=windows,同样的请求头,同样的 platform 选项。
然后是创建用的请求体。下面是它的形状,取自他们公开的 Python 示例:
name platform browserType mainWebsite
useragent webrtc canvas webgl
webglInfo timezone locale cpu
memory screen doNotTrack osVersion
把这份清单慢慢读一遍,因为它准确地告诉了你这个产品是什么。
useragent 接受一个 manual 之类的 mode 和一个字符串值。webrtc 接受 altered 这类模式,可选带一个 IP。canvas 和 webgl 接受 real。webglInfo 接受 GPU 厂商和渲染器字符串——在他们自己的示例里,是通过 ANGLE 在 Direct3D 11 上报出来的 Intel Iris Xe——再加上 MAX_TEXTURE_SIZE 这类 WebGL2 上限值。cpu 和 memory 接受核心数和内存大小。timezone 和 locale 接受 auto 或一个具体值。
**每一个字段描述的都是一台机器。**不是一门生意,不是一笔花费,不是一个结果。这套 API 的全部词汇就是对一台可信的电脑的描述,因为那正是它被造出来要解决的问题,而它解决得很彻底。
本地 API:启动与驱动
环境存在之后,你在本地把它打开。
**先认证。**在他们网站的个人账户里创建一个 token,然后:
POST http://localhost:3001/v1.0/auth/login-with-token
Content-Type: application/json
{ "token": "API_TOKEN" }
成功的样子是 {"success": true}。他们的文档写得很明确:跳过这一步就是那个 401 的来源。
启动环境。
GET http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/start?automation=1
加上 &headless=1 走无头模式。automation=1 这个参数是必需的——不带它,你会拿到一个挂不上去的浏览器。
响应才是有意思的部分。
{
"success": true,
"automation": {
"port": 50568,
"wsEndpoint": "/devtools/browser/c71c1a9d-f07c-4dd9-84a9-53a4c6df9969"
}
}
那是一个 DevTools Protocol 句柄。从这里开始你是挂上去——不是启动。Puppeteer、Playwright 和 Selenium 都是连到那个端口上已经在跑的浏览器。他们的文档三种都覆盖了,并对 Selenium 这条路加了一条说明:标准的 ChromeDriver 可能暴露自动化痕迹,所以他们按浏览器版本发布了自己改过的 ChromeDriver,建议把脚本指向它。
停止环境。
GET http://localhost:3001/v1.0/browser_profiles/PROFILE_ID/stop
这些约束,文档里都写了:
- 只在 Dolphin{anty} 运行时可用。
- 请求必须来自浏览器所在的同一台机器。
- 默认端口 3001;被占用时会分配另一个——在应用的 Health 窗口里查。
- 速率限制:每分钟 1,500 次请求。
- 在 Free 套餐上,通过 API 导入和导出 cookie 不可用,因为这一档没有云同步。
你实际会写的那个脚本
九行伪代码,值得写出来,因为它的形状本身就是论点:
1. POST /v1.0/auth/login-with-token → authorise the local app
2. POST dolphin-anty-api.com/browser_profiles → create profile from a template
3. GET /v1.0/browser_profiles/{id}/start?automation=1
4. read port + wsEndpoint from the response
5. puppeteer.connect({ browserWSEndpoint: ... })
6. ... ← everything you actually care about
7. GET /v1.0/browser_profiles/{id}/stop
8. repeat for the next profile
9. done
第 1 到第 5 步和第 7 步,是 Dolphin 的 API 在干净利落地做自己的事。第 6 步才是所有难题住的地方,而 Dolphin 的 API 对它无话可说——这是设计使然。
因为第 6 步里,你是在用一个浏览器自动化库驱动一个渲染出来的广告界面:等元素、处理这周新冒出来的一个弹窗、在布局改了之后重新找到某个按钮、接住一次只保存了一半的操作。每一个搭过这套东西的团队都知道它的维护画像。脚本挂掉不是因为 API 挂了,是因为一个页面变了。
另外两条不走 API 的自动化路
值得知道,因为对很多活儿来说它们是更好的答案,而且完全不用写代码。
**Script Builder。**Dolphin{anty} 自带一个可视化的场景构建器,用于跨环境的浏览器自动化,帮助中心里有专门一节,官网上标注支持 Windows、Linux 和 macOS。他们的营销说法是养号、数据采集"以及你心里想的任何别的事"。他们公开的评价里有一条把实际价值说得很直白:一位管理 500 多个账号的用户说,这个场景构建器把注册和账号管理的时间压缩到了大约十分之一,而且只靠一双手。如果你的自动化就是在环境里重复一串点击,这比写和维护 Puppeteer 便宜。
**环境同步器。**官网上标着 beta:让几个环境跑在同步器里,主环境的每一个动作都会在其他环境里重放一遍。这是"手动但并行"的那个选项——你开一个浏览器,其余的跟着走。
在一篇讲 API 的文章里提这两个,是为了对范围诚实。很多人向 API 要的东西,其实是一个场景,不是一个脚本。当你需要从某个数据源以程序化方式创建环境、在流水线里启动它们,或者用一个可视化构建器表达不了的逻辑去驱动它们时,才该去动 API。否则你是在维护代码,去做产品本来就已经会做的事。
这套 API 知道什么,一张表说完
| 对象 | 在 Dolphin{anty} API 里 | 在广告平台 API 里 |
|---|---|---|
| 浏览器环境 | ✅ 创建、克隆、启动、停止 | — |
| 指纹(UA、WebGL、canvas、WebRTC) | ✅ 完全可控 | — |
| 代理 IP | ✅ 按环境挂载 | — |
| Cookie | ✅ 付费档可导入导出 | — |
| 广告系列 | — | ✅ 带 ID 的对象 |
| 广告组 / 广告 | — | ✅ 带 ID 的对象 |
| 预算 | — | ✅ 可读可写的字段 |
| 花费与结果 | — | ✅ 报表端点 |
| 转化收入 | — | 通过追踪系统或转化 API |
两列都不缺什么。它们是两个不同世界的两份清单,而那些空格子正是两种工具都存在的理由。
把边界直说出来
Dolphin{anty} 的 API 能创建一个环境、克隆它、描述它的指纹、挂上代理 IP、启动它、停止它、交给你一个 DevTools 端口,并在付费档上管理 cookie。
它不知道广告系列是什么。它不知道预算是什么。它不知道你昨天花了多少,而且它没有任何一个字段能存下这样的东西。
这是这个市场上最干净、最诚实的一条边界,而且值得不带任何刺地说出来:**浏览器 API 自动化的是身份,它从来没打算自动化买量。**任何人告诉你他的指纹浏览器能"自动化你的广告",他描述的是针对界面的浏览器自动化——那是一门真实的技术,也带着真实的维护成本,但它不是一套广告 API。
边界的另一侧长什么样
下面是我们自己的产品,写出来给你和上面的内容放在一起掂量。
Wevion 通过 OAuth 针对各广告平台自己的营销 API 工作——Meta、Google、TikTok、Taboola、Snapchat 和 Outbrain。广告系列、广告组、广告、预算和结果都是带 ID 的对象,不是页面上的元素。没有东西要选,没有东西要等,也没有东西会在一次布局上线时坏掉。
而 Wevion 自己也有可编程的接口,下面这些限定条件让这句话保持诚实:
**目录。**我们的 MCP 服务在一把 API key 上暴露 769 个操作,其中 422 个是写操作——五个广告平台,外加追踪、电商和素材。另外还有一个已发布的 CLI。
在这个数字对你有意义之前,有四件事你该知道:
- **这是 Pro 套餐及以上的功能。**在 Free 和 Starter 档上 API 权限是关的——那里
max_api_keys是零。 - **今天没有任何客户在用它。**生产环境里存在 9 把密钥,全是内部或测试用的,整个生命周期里一共 58 次请求。这是一个真实存在、覆盖面也真实的接口,而采用率基本为零。这是实话,只报 769 而不带上这一句,卖的就是一个数字,不是一个产品。
- 这是从我们公开的 OpenAPI 规范算出来的目录,不是我们真的跑了一次带认证的
tools/list数出来的。 - **MCP 接口内部没有确认关卡。**路由级的守卫是有的,但产品里别处存在的那一步审批,不在这条路径上。你把一个 agent 接上去,就是把一个 agent 接到了写操作上。具体到 Meta,预算修改不在 MCP 目录里。
我们也不声称这里只有我们一家。好几家厂商都发布了可读写的 MCP 接口,其中一些是免费的,至少有一家从很低的月费起就同时提供 MCP 和 CLI。诚实的说法是"一把密钥下的覆盖面",不是独家。
真正把广告系列跑起来的是什么
可编程接口并不是价值的大头,考虑到上面那个采用率数字,装作不是这样会很奇怪。下面是这个产品自己会做的事:
六个平台,用同一种方式接入——Meta、Google、TikTok、Taboola、Snapchat、Outbrain。六个平台都能连接、投放、同步和衡量。
小的数字先说。由规则引擎驱动的预算调整跑在五个平台上(Outbrain 没有这条分支)。跨平台互相比较的规则跑在四个上:Meta、Google、TikTok、Taboola。在广告组和广告层级上暂停与启用:三个——Meta、TikTok、Snapchat。投放回滚与重投:只有 Meta。
规则按 15 分钟的节奏跑,带 33 个条件指标——包括 profit、profit_margin、true_roas 和 break_even_roas,所以一条规则可以按边际贡献动作,而不是按平台报出来的回报率。
**一个不对称的刹车。**停掉自治会拦下启用、加预算和重投,而暂停和降预算继续跑。
**预算池。**一份日预算横跨几个平台的广告系列,每八小时重新分配一次,事前有模拟,事后有分配日志。
十个追踪系统适配器——BeMob、Binom、ClickFlare、Everflow、ExoClick、Keitaro、RedTrack、SearchFeed、TrafficManager、Voluum。
**角色与记录。**组织 → 团队 → 工作区 → 访问组,配一份可以用大白话查询的审计日志。
而我们没有的东西,用同样的口气说:
- **投放时没有素材唯一化。**它在 Dolphin{cloud} 的功能列表里,不在我们的产品里。
- 投放回滚只有 Meta 有——另外五个平台的批量投放没有撤销。
- **完全没有身份层。**没有环境,没有指纹,没有代理 IP,也没有要做这些的打算。如果你的自动化问题是"在一台机器上把四十个登录彼此隔开",那 Dolphin{anty} 的 API 就是对的工具,我们替代不了它。
- 入门套餐上的席位是我们最扎手的地方——在 Starter 上,额外席位买不了。
开发者会想要的那份摘要
- 两套 API。
dolphin-anty-api.com用 Bearer token,负责创建和描述;localhost:3001负责启动、停止,并交给你一个 DevTools 端口。 - 先认证本地那套,走
POST /v1.0/auth/login-with-token,否则就等着 401。 automation=1是必需的,启动时带上;headless=1可选。- **是挂上去,不是启动。**取出
port和wsEndpoint,连上 Puppeteer、Playwright 或 Selenium——走 Selenium 这条路时用他们改过的 ChromeDriver。 - 每分钟 1,500 次请求,同一台机器,应用在运行。免费档没有 cookie 导入导出。
- **环境的请求体是一份机器描述。**没有广告系列,没有预算,没有花费——而这是这一层的边界,不是产品的缺口。
下一步
- 不确定自己手上是哪个 Dolphin 产品:Dolphin{anty} 对比 Dolphin{cloud}。
- 在用 Cloud 那座桥:Dolphin{cloud} 扩展到底做什么。
- 想要广告系列对象、而不是 CSS 选择器:在免费套餐上试试 Wevion。它通过 OAuth 授权到你已经有的广告账户上——没有东西要迁移,你的浏览器栈原封不动。
常见问题
The Ad Signal
写给不靠猜的广告投放人员的每周洞察。一封邮件,只有信号。
相关文章
Dolphin{anty} 与 Dolphin{cloud}:两个产品,两份活——你到底需要哪一个
Dolphin 有两个名字几乎一样的产品,市场每天都在把它们搞混。一个是装在你自己机器上的指纹浏览器, 另一个是管 Facebook 广告账户的云端后台。这篇讲清楚每个到底做什么、两者之间的令牌怎么工作, 以及你真正想解决的是哪一份活。
Dolphin{cloud} 浏览器扩展:它加了什么,又止步在哪里
很多人搜“dolphin cloud extension”,落地的页面却从头到尾没提过它。所以这篇就写这个扩展本身:它是干什么的,为什么有的浏览器环境里有、有的没有,两个字段的令牌怎么配,以及任何活在浏览器标签页里的东西都躲不开的那个限度。
GoLogin 与 Wevion:不是两个竞品,而是同一套技术栈的两层
正面对比 GoLogin 的浏览器环境层与 Wevion 的广告平台 API 层在多账号运营中的差别:配置流程、日常动线、功能差异、各自的安全模型、三种规模下的成本, 以及每个工具究竟回答了哪一个问题。