我是张大鹏,做了十多年人工智能,目前专注于 AI + 全栈教育培训。最近在帮一个跨境电商团队搭建 Instagram 矩阵自动化系统,说实话,最让人头疼的不是 AI 生成内容,是浏览器批量管理------几十个账号要同时操作,指纹隔离要可靠,还要能对接 AI 决策链路。调研了一圈,Claude Code + AdsPower MCP 是目前最优解。本文分享完整集成方案,适合想做浏览器自动化的开发者。

一、为什么选择 Claude Code + AdsPower?
1.1 跨境电商的浏览器管理痛点
做跨境电商的朋友都知道,多账号管理是刚需:
- 平台限制:Instagram、Facebook、TikTok Shop 等平台对多账号操作限制严格
- 指纹隔离:每个账号必须有独立的浏览器环境、IP、Cookie
- 批量操作:几十上百个账号,人工操作不现实
- AI 赋能:大模型要能控制浏览器,而不是只能生成文字
传统的解决方案:
- Selenium/Playwright:脚本控制,但需要人工写代码维护
- RPA 工具:录像模拟,无法与 AI 决策链路打通
- 指纹浏览器:解决了隔离问题,但 AI 无法直接控制
我的感受是:市面上的工具各有所长,但没有一站式方案。Claude Code + AdsPower MCP 的组合,让我看到了 AI 原生控制浏览器的可能性。
1.2 Claude Code 与 AdsPower 的互补关系
要理解这个组合的优势,先看一张整体架构图:

从图中可以看出三层的协作关系:
为什么是 Claude Code?
- 专为开发者设计的命令行 AI 编程助手
- 完整的文件系统访问权限
- Git 操作自动化
- 原生支持 MCP 协议
为什么是 AdsPower?
- 指纹浏览器领域头部厂商
- 官方提供 MCP Server(GitHub 开源)
- 20+ Local API 接口
- 支持 Selenium/Playwright CDP
二、三种集成方案对比
2.1 方案总览
一张图看懂三种集成方式的区别:

| 方案 | 集成方式 | 适用场景 | 配置难度 |
|---|---|---|---|
| MCP 协议 | Claude Code → AdsPower MCP Server | AI 原生操作、快速测试 | ⭐ 简单 |
| HTTP API | Python Script → AdsPower Local API | 批量操作、生产环境 | ⭐⭐ 中等 |
| Playwright CDP | AdsPower → Playwright CDP 连接 | 复杂自动化、截图/抓取 | ⭐⭐⭐ 复杂 |
2.2 方案一:MCP 协议(推荐)
原理:Claude Code 通过 MCP 协议调用 AdsPower 提供的 38 个工具。
Claude Code (MCP Client)
│
│ claude mcp add adspower -- npx local-api-mcp-typescript
│
▼
AdsPower MCP Server (local-api-mcp-typescript)
│
▼
AdsPower Local API (http://127.0.0.1:50325)
配置步骤:
第一步:确保环境满足要求
| 要求 | 说明 |
|---|---|
| Node.js | ≥ 18.0(推荐 Node 20 LTS) |
| Claude Code | 最新版本 |
| AdsPower 客户端 | V2.4.1 及以上,已启动 |
第二步:在 Claude Code 中添加 MCP
bash
# 打开 Claude Code,运行命令
claude mcp add adspower -- npx local-api-mcp-typescript
第三步:在 AdsPower 中开启 API
打开 AdsPower → 设置 → API设置 → 关闭"安全校验"
第四步:验证连接
重启 Claude Code,然后在对话中测试:
用户:列出所有浏览器环境
AI:正在调用 get_browser_list...
可用工具一览(共 38 个):
| 类别 | 工具数 | 代表工具 |
|---|---|---|
| 浏览器管理 | 17 | open-browser、create-browser、get-browser-list |
| 分组管理 | 3 | create-group、get-group-list、update-group |
| 代理管理 | 4 | create-proxy、update-proxy、delete-proxy |
| 标签管理 | 3 | create-tag、get-tag-list、update-tag |
| 内核管理 | 2 | download-kernel、get-kernel-list |
| 自动化操作 | 9 | go-to-url、click-element、screenshot |
我的感受是:MCP 协议是未来趋势,配置简单,AI 理解成本低。但目前 Claude Code 的 MCP 支持还有优化空间,复杂场景建议结合 HTTP API。
2.3 方案二:HTTP API(灵活)
原理:Claude Code 通过 Python 脚本调用 AdsPower Local API。
python
# ads_power_client.py
import requests
from typing import Optional, Dict, List, Any
class AdsPowerClient:
"""AdsPower Local API 封装"""
BASE_URL = "http://127.0.0.1:50325"
def __init__(self, api_key: str):
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def create_browser(
self,
name: str,
group_id: str = "default",
country: str = "美国",
proxy_type: str = "http",
proxy_host: str = "",
proxy_port: str = "",
**kwargs
) -> Dict[str, Any]:
"""创建浏览器环境"""
data = {
"name": name,
"group_id": group_id,
"country": country,
"proxy_type": proxy_type,
"proxy_host": proxy_host,
"proxy_port": proxy_port,
**kwargs
}
resp = requests.post(
f"{self.BASE_URL}/api/v2/browser-profile/create",
headers=self.headers,
json=data
)
return resp.json()
def start_browser(self, profile_id: str) -> Dict[str, Any]:
"""启动浏览器,返回 WS 地址"""
resp = requests.post(
f"{self.BASE_URL}/api/v2/browser-profile/start",
headers=self.headers,
json={"profile_id": profile_id}
)
return resp.json()
def get_browser_list(
self,
group_id: Optional[str] = None,
page: int = 1,
page_size: int = 100
) -> List[Dict]:
"""获取浏览器列表"""
params = {"page": page, "page_size": page_size}
if group_id:
params["group_id"] = group_id
resp = requests.get(
f"{self.BASE_URL}/api/v2/browser-profile/list",
headers=self.headers,
params=params
)
data = resp.json()
return data.get("data", {}).get("list", [])
def close_browser(self, profile_id: str) -> Dict[str, Any]:
"""关闭浏览器"""
resp = requests.post(
f"{self.BASE_URL}/api/v2/browser-profile/stop",
headers=self.headers,
json={"profile_id": profile_id}
)
return resp.json()
使用示例:
python
from ads_power_client import AdsPowerClient
client = AdsPowerClient(api_key="your_api_key")
# 批量创建 10 个环境
for i in range(10):
result = client.create_browser(
name=f"INS_账号_{i+1}",
country="美国",
proxy_type="http",
proxy_host="proxy.example.com",
proxy_port="8080"
)
print(f"创建 {i+1}: {result.get('msg')}")
# 启动指定环境
info = client.start_browser(profile_id="h1yynkm")
ws_endpoint = info["data"]["ws_endpoint"]
print(f"WS 地址: {ws_endpoint}")
适用场景:
- 需要批量创建/管理环境
- 生产环境的自动化工作流
- 与现有 Python 项目集成
2.4 方案三:Playwright CDP(深度控制)
原理:通过 AdsPower 启动浏览器获取 WebSocket 地址,再用 Playwright 连接进行深度控制。
python
from playwright.sync_api import sync_playwright
import requests
# 第一步:通过 AdsPower API 启动浏览器
API_KEY = "your_api_key"
PROFILE_ID = "h1yynkm"
resp = requests.post(
"http://127.0.0.1:50325/api/v2/browser-profile/start",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"profile_id": PROFILE_ID}
)
ws_endpoint = resp.json()["data"]["ws_endpoint"]
print(f"连接到: {ws_endpoint}")
# 第二步:用 Playwright 连接该浏览器
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(ws_endpoint)
# 创建新页面
page = browser.new_page()
# 导航到目标网站
page.goto("https://www.instagram.com")
page.wait_for_load_state("networkidle")
# 截图
page.screenshot(path="instagram_home.png")
# 填表/点击等复杂操作
page.fill('input[name="username"]', 'your_username')
page.fill('input[name="password"]', 'your_password')
page.click('button[type="submit"]')
# 等待登录完成
page.wait_for_url("**/accounts/onetap/**", timeout=30000)
# 获取页面内容
content = page.content()
# 关闭连接
browser.close()
print("自动化完成!")
适用场景:
- 需要截图/录屏的复杂操作
- 表单填写、数据抓取
- 需要模拟用户行为的场景
2.5 三种方案的协作关系
这张图展示了实际项目中三种方案的协作方式:

三、完整工作流设计
3.1 实际应用示例
场景:Instagram 矩阵发帖
Step 1:批量创建环境(HTTP API)
python
# 创建 10 个 Instagram 账号环境
for i in range(10):
client.create_browser(
name=f"INS_矩阵_{i+1}",
country="美国",
user_def_config={
"fingerprint": {
"resolution": "1920x1080",
"UA": "Chrome 134"
}
}
)
Step 2:AI 指令发布内容(MCP 协议)
用户:帮我在 INS_矩阵_1 到 INS_矩阵_5 这5个账号上发布同一篇图文
内容是:AI 时代的跨境电商运营技巧
图片使用同一张产品图
AI:正在执行批量发布任务...
- 调用 MCP create-browser 创建临时环境
- 调用 Playwright CDP 登录每个账号
- 调用 MCP screenshot 截图确认
- 发布完成
Step 3:数据监控(Playwright CDP)
python
# 收集所有账号的发布效果
for profile_id in profile_ids:
ws = client.start_browser(profile_id)["data"]["ws_endpoint"]
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(ws)
page = browser.new_page()
# 获取帖子数据
page.goto(f"https://instagram.com/p/{post_id}/")
likes = page.locator('button[type="button"] >> text="赞"').count()
# 收集数据
stats.append({
"profile_id": profile_id,
"likes": likes,
"timestamp": datetime.now()
})
browser.close()
四、避坑指南
4.1 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| MCP 连接失败 | 安全校验未关闭 | AdsPower → 设置 → API设置 → 关闭安全校验 |
| 浏览器启动超时 | 端口被占用 | 检查 50325 端口,或更改 AdsPower 端口 |
| Playwright 连接失败 | WS 地址过期 | 每次操作前重新获取 WS 地址 |
| 账号被封 | IP/指纹关联 | 确保每个环境使用独立 IP 和指纹 |
| API 调用频繁报错 | 速率限制 | 添加适当的延时,控制调用频率 |
4.2 安全建议
- API Key 保护:不要硬编码在代码中,使用环境变量
- 环境隔离:生产环境和测试环境分开
- 操作日志:记录所有 API 调用,便于排查问题
- 权限控制:最小化 API Key 的权限范围
4.3 我的建议
说实话,MCP 协议是未来,但 HTTP API 是现在。
- MCP 协议配置简单、AI 友好,适合快速验证
- HTTP API 稳定可靠,适合生产环境
- Playwright CDP 功能强大,适合复杂自动化
最佳实践是三者结合,用 MCP 处理 AI 指令,用 HTTP API 处理批量操作,用 Playwright CDP 处理复杂场景。
五、总结
| 维度 | MCP 协议 | HTTP API | Playwright CDP |
|---|---|---|---|
| 配置难度 | ⭐ 简单 | ⭐⭐ 中等 | ⭐⭐⭐ 复杂 |
| AI 友好度 | ⭐⭐⭐ 最高 | ⭐⭐ 中等 | ⭐ 一般 |
| 灵活性 | ⭐⭐ 中等 | ⭐⭐⭐ 最高 | ⭐⭐⭐ 最高 |
| 适用场景 | 快速测试、简单指令 | 批量操作、生产环境 | 复杂自动化 |
| 维护成本 | 低 | 中 | 高 |
核心要点:
- Claude Code + AdsPower MCP 实现了 AI 原生控制浏览器
- 三种方案各有优势,实际项目中可以结合使用
- 安全校验要关闭,但要注意环境可信
- 批量操作用 HTTP API,复杂自动化用 Playwright CDP
参考资料:
作者 :张大鹏
团队 :大鹏 AI 教育
日期 :2026-05-12
版权声明:本文为「大鹏 AI 教育」原创,转载需注明出处