跳到正文

自动化 Dolphin{anty}:API 能做什么,又够不到什么

9 分钟阅读
MK

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.comhttp://localhost:3001(默认)
认证Authorization: Bearer API_TOKENPOST /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。

在这个数字对你有意义之前,有四件事你该知道:

  1. **这是 Pro 套餐及以上的功能。**在 Free 和 Starter 档上 API 权限是关的——那里 max_api_keys 是零。
  2. **今天没有任何客户在用它。**生产环境里存在 9 把密钥,全是内部或测试用的,整个生命周期里一共 58 次请求。这是一个真实存在、覆盖面也真实的接口,而采用率基本为零。这是实话,只报 769 而不带上这一句,卖的就是一个数字,不是一个产品。
  3. 这是从我们公开的 OpenAPI 规范算出来的目录,不是我们真的跑了一次带认证的 tools/list 数出来的。
  4. **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 导入导出。
  • **环境的请求体是一份机器描述。**没有广告系列,没有预算,没有花费——而这是这一层的边界,不是产品的缺口。

下一步

常见问题

The Ad Signal

写给不靠猜的广告投放人员的每周洞察。一封邮件,只有信号。

准备好把投放运营自动化了吗?

在每一个账户上批量创建广告。Pro 套餐可免费试用 14 天,注册时无需绑卡,14 天内不扣任何费用。