阅读时间 5 分钟

AdsPower + AI 浏览器自动化:用本地 API、Playwright 和 MCP 驱动独立浏览器环境

把 AdsPower 的独立浏览器环境接到 Playwright 脚本和 Claude Code 上,做多环境的浏览器自动化。

说明:文中 AdsPower 注册链接和邀请码 H1vkd0 是我的推广链接,通过它注册价格不变,我会拿到一点佣金。

用 AI 做浏览器自动化,最麻烦的往往不是写脚本,而是浏览器环境:每个任务要独立的登录状态、Cookie 不能串、团队里几个人要共用同一套环境。AdsPower 本来是做多账号环境管理的工具,它的本地 API 和官方 MCP 正好能把这两件事接起来:一个账号、一个项目一个独立的浏览器环境,用 Playwright 脚本或者 Claude Code 这类 AI Agent 去驱动它。

这篇讲两种用法:用 Python Playwright 控制 AdsPower 环境,以及让 Claude Code 通过 MCP 直接操作浏览器。

先说清楚:本地 API 要付费版

AdsPower 免费版只能建 2 个环境,而且不能用本地 API,官方文档原话是 "A paid AdsPower plan is required to use the API"。所以想跟着这篇做自动化,需要:

  • 开通付费版(专业版起,可选 10 / 20 / 50 / 100 个环境,季付、年付有折扣),具体价格以官网为准
  • 或者先用官方的 7 天全功能免费试用体验一下

注册地址:AdsPower 注册链接,邀请码 H1vkd0。客户端支持 Windows、macOS 和 Linux(Ubuntu 22.04 及以上)。

第一步:开启本地 API,拿到 API Key

  1. 安装并登录 AdsPower 客户端
  2. 进入 账户管理 → 设置 → Local API
  3. 记下接口地址,默认是 http://local.adspower.net:50325(也可以用 http://localhost:50325,端口以这个页面显示的为准)
  4. 点 Generate api-key 生成 API Key。一个账号只有一个 Key,重新生成后旧的立刻失效

先在浏览器里打开 http://local.adspower.net:50325/status 测一下,返回 {"code":0,"msg":"success"} 就说明接口通了。

开了安全校验的话,之后所有请求都要带请求头:

Authorization: Bearer 你的API_KEY

注意本地 API 依赖 AdsPower 客户端在运行,客户端关了接口就不通了。

第二步:用 Python Playwright 控制一个环境

思路是:调接口启动某个环境 → 接口返回一个调试地址 → Playwright 用 connect_over_cdp 连上去,之后就和平时写 Playwright 一样了。

先装依赖:

pip install requests playwright

完整示例(打开第一个环境、访问网页、打印标题、关闭):

import requests
from playwright.sync_api import sync_playwright

API = "http://local.adspower.net:50325"
HEADERS = {"Authorization": "Bearer 你的API_KEY"}

def first_profile():
    r = requests.get(f"{API}/api/v1/user/list", params={"page_size": 10}, headers=HEADERS).json()
    return r["data"]["list"][0]["user_id"]

def start(user_id):
    r = requests.get(f"{API}/api/v1/browser/start", params={"user_id": user_id}, headers=HEADERS).json()
    if r["code"] != 0:
        raise RuntimeError(r["msg"])
    return r["data"]["ws"]["puppeteer"]

def stop(user_id):
    requests.get(f"{API}/api/v1/browser/stop", params={"user_id": user_id}, headers=HEADERS)

uid = first_profile()
ws = start(uid)
with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(ws)
    context = browser.contexts[0]
    page = context.pages[0] if context.pages else context.new_page()
    page.goto("https://example.com")
    print(page.title())
    browser.close()
stop(uid)

几个要点:

  • 查询环境列表的 page_size 默认只返回 1 条,最多 100,要列多个记得传参数
  • 启动接口返回的 data.ws.puppeteer 就是给 Playwright / Puppeteer 用的 WebSocket 地址;用 Selenium 的话取 data.ws.selenium 和 data.webdriver
  • 想不弹窗口在后台跑,启动时加参数 headless=1
  • 用连接上去的那个 context,不要自己 new_context(),否则用的就不是这个环境的 Cookie 和设置了
  • 新版还有一套 v2 接口(POST /api/v2/browser-profile/start,传 profile_id),返回格式一样,二选一就行

接口有频率限制:环境数 200 以内是每秒 2 次,部分接口每秒 1 次。批量启动时记得加间隔。

第三步:让 Claude Code 通过 MCP 直接操作浏览器

这是最省事的玩法。AdsPower 官方出了 MCP 服务(npm 包 local-api-mcp-typescript),提供打开环境、新建环境、跳转网页、点击、填表、截图、读取页面文字等二十多个工具。接上之后,你直接用中文跟 AI 说要做什么就行。

需要 Node.js 18 以上,并且本机装着、开着 AdsPower。在 Claude Code 里添加:

claude mcp add adspower -e API_KEY=你的API_KEY -e PORT=50325 -- npx -y local-api-mcp-typescript

用 Cursor、Cherry Studio 这类支持 MCP 的客户端也一样,命令填 npx -y local-api-mcp-typescript,环境变量填 API_KEY 和 PORT。

添加好之后,在对话里就可以这样用:

  • "列出我 AdsPower 里的浏览器环境"
  • "打开名字叫『资料收集』的环境,访问某某网页,把页面上的价格表整理成表格"
  • "打开环境 3,截一张当前页面的图"

AI 会自己调用对应的工具去操作那个独立的浏览器环境,登录状态都是这个环境自己的,不会跟你日常用的浏览器混在一起。

如果你还没装 Claude Code,或者想让它走更便宜的模型,可以看 Claude Code 接入 DeepSeek;想了解另一个浏览器 Agent 工具,可以看 Browser Use CLI 教程。

适合用来做什么

  • 团队共用环境:运营、客服几个人共用同一批店铺或社媒后台,每个账号一个环境,分享环境就行,不用到处发密码
  • 按项目隔离:每个项目、每个客户一个独立环境,Cookie 和登录状态互不影响
  • 自动化自己的重复工作:定时登录自己的后台导出报表、整理资料、填写固定格式的表单

最后提醒一句:自动化操作要遵守目标网站的服务条款。AdsPower 自己的条款也写明,禁止用来欺诈、冒充或绕过网站的安全机制,自动化导致第三方账号被限制的后果由用户自己承担。别拿它去批量注册、刷量。

参考:AdsPower Local API 文档、官方代码示例、AdsPower MCP(npm)。文中代码按官方文档和示例整理。