当前位置: 首页 > news >正文

AI Agent + 指纹浏览器:从0搭建MCP Server实现批量账号自动化管理

我是张大鹏,做了十多年人工智能,带过不少项目。说实话,AI Agent 最难的不是生成内容,是"动手干活"——大模型再强,如果只能输出文字而不能操控真实环境,自动化就永远差最后一公里。最近在研究 Instagram 矩阵自动化时,我发现了一个关键破局点:MCP 协议 + 指纹浏览器,让 AI Agent 直接操控批量浏览器账号。本文记录从 0 搭建 AdsPower MCP Server 的完整过程,附可运行代码。


一、为什么 AI Agent 需要 MCP 协议?

1.1 传统 AI 自动化的瓶颈

我和很多开发者聊过 AI 自动化,发现一个普遍困境:

  • API 调用只能获取数据,不能操控真实 UI
  • Selenium/Playwright脚本可以控制浏览器,但需要人工写代码
  • RPA 工具可以录像模拟,但无法与 AI 决策链路打通

换句话说:AI 负责思考,自动化工具负责执行,但两者之间缺一座桥

1.2 MCP 协议是什么?

MCP(Model Context Protocol)是 Anthropic 在 2024 年底开源的一个标准协议,旨在让 AI 模型与外部工具无缝对接。它的设计哲学很简单:

工具是 AI 能力的扩展,而不是附庸。

MCP 的核心架构是客户端-服务器模式

┌─────────────────┐ MCP ┌─────────────────┐ │ AI 编码助手 │◄──────────────────►│ MCP Server │ │ Claude / Cursor │ │ (如 AdsPower) │ │ OpenClaw │ │ │ └─────────────────┘ └────────┬────────┘ │ ▼ ┌─────────────────┐ │ 指纹浏览器环境 │ │ (批量账号管理) │ └─────────────────┘

为什么重要?MCP 协议让 AI 直接"调用工具",而不是通过 API 手工拼接 URL。AI 可以用自然语言驱动浏览器操作:

# 传统的 API 调用方式requests.get("http://local.adspower.net:50325/api/v1/browser/start?user_id=xxx")# MCP 协议下,AI 只需要说:# "帮我启动 ID 为 h1yynkm 的浏览器环境"

1.3 我的感受

说实话,MCP 协议不是什么新概念,JSON-RPC、REST API 都能做类似的事。但 MCP 的优势在于标准化和上下文感知——AI 知道有哪些工具可用,工具的输入输出是什么,这让"AI 控制浏览器"从不可能变成了日常。


二 AdsPower 为什么是指纹浏览器 MCP 的首选?

在调研阶段,我对比了市面主流指纹浏览器(Hubstudio、林猎等),结论如下:

能力维度AdsPowerHubstudio林猎
Local API✅ 20+ 接口✅ 有✅ 有
Selenium/Puppeteer✅ 原生支持✅ 支持✅ 支持
MCP Server官方提供❌ 未提供❌ 未提供
指纹配置维度20+较多较多
GitHub 仓库✅ 开源

AdsPower 是三者中唯一提供官方 MCP Server 的厂商,而且是开源的。这一点对于想做 AI 自动化的开发者来说,是决定性的优势。


三 从 0 搭建 AdsPower MCP Server

3.1 环境准备

在开始之前,确保你的环境满足以下条件:

要求说明
操作系统Windows / macOS / Linux
Node.js≥ 18.0(推荐 Node 20)
AdsPower 客户端V2.4.1 及以上
API Key在 AdsPower UI 中生成

安装 Node.js(如果还没有):

# 检查版本node--version# 如果低于 18,更新到最新 LTS 版本

3.2 获取 AdsPower API Key

  1. 打开 AdsPower 客户端
  2. 进入设置 → API 设置
  3. 勾选"启用 Local API"
  4. 点击"生成 API Key",复制保存

注意:API Key 只显示一次,请妥善保管。

3.3 安装 MCP Server

AdsPower 官方提供两种安装方式,我推荐源码构建方式——更可控,而且可以直接用于 AI 编码助手集成。

# 1. 克隆官方仓库gitclone https://github.com/AdsPower/adspower-browser.gitcdadspower-browser# 2. 安装依赖(推荐使用 pnpm)pnpminstall# 如果没有 pnpm,先安装:npm install -g pnpm# 3. 构建项目pnpmrun build# 4. 构建产物位置# packages/local-api-mcp/build/index.js

更简单的方式——直接通过 npx 运行:

npx-ylocal-api-mcp-typescript

不过 npx 方式每次都会下载,不推荐在生产环境使用。

3.4 配置 AI 编码助手接入

构建完成后,你就有了一个可对接 AI 工具的 MCP Server。以下是主流 AI 工具的接入方式:

Claude Code:

claude mcpaddadspower-local-api\-ePORT="50325"\-eAPI_KEY="your_api_key_here"\-- npx-ylocal-api-mcp-typescript

Cursor:

在 Settings → MCP → Add New Server,填入:

{"mcpServers":{"adspower-local-api":{"command":"npx","args":["-y","local-api-mcp-typescript"],"env":{"PORT":"50325","API_KEY":"your_api_key_here"}}}}

OpenClaw(我的主力工具):

npx clawhub@latestinstalladspower-browser--force

接入成功后,你就可以用自然语言控制浏览器了:

用户:帮我启动 ID 为 h1yynkm 的浏览器环境 AI:调用 MCP tool: start_browser → POST http://local.adspower.net:50325/api/v1/browser/start?user_id=h1yynkm&api_key=xxx → 浏览器启动成功,返回 Selenium 接入点

四 用 MCP Server 控制浏览器:代码实战

4.1 MCP Server 提供的核心工具

AdsPower MCP Server 封装了以下核心能力:

工具名称功能描述
start_browser启动指定浏览器环境
stop_browser关闭指定浏览器
stop_all_browsers关闭所有浏览器
get_browser_list获取环境列表
get_browser_state查询浏览器启动状态

如果你用的是 Node.js SDK 而不是 MCP,还可以调用更底层的 API,包括创建/更新/删除环境、代理配置等。

4.2 场景一:用 Claude 控制启动/关闭浏览器

假设我已经配置好了 AdsPower MCP Server,在 Claude Code 中:

# 启动浏览器环境# 我只需要说:"帮我启动 h1yynkm 这个环境"# Claude 会调用 MCP 工具,类似这样:# start_browser(user_id="h1yynkm", api_key="xxx")# 返回结果包含 Selenium 和 Puppeteer 的接入点:{"code":0,"data":{"ws":{"selenium":"127.0.0.1:50300","puppeteer":"ws://127.0.0.1:50300/devtools/browser/xxxx"},"debug_port":"50300","webdriver":"C:\\path\\to\\chromedriver.exe"},"msg":"success"}

4.3 场景二:批量启动多个账号(Python + Selenium)

假设我们有一批 Instagram 账号,要批量启动浏览器并执行操作:

importrequestsimporttimefromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptionsfromselenium.webdriver.chrome.serviceimportService# AdsPower API 配置API_BASE="http://local.adspower.net:50325"API_KEY="your_api_key_here"# 待启动的账号列表ACCOUNT_LIST=[{"user_id":"h1yynkm","serial":"account_001","country":"US"},{"user_id":"h1yynkm2","serial":"account_002","country":"UK"},{"user_id":"h1yynkm3","serial":"account_003","country":"JP"},]defstart_browser(user_id:str,api_key:str)->dict:"""通过 AdsPower API 启动浏览器"""url=f"{API_BASE}/api/v1/browser/start"params={"user_id":user_id,"api_key":api_key}response=requests.get(url,params=params,timeout=60)data=response.json()ifdata["code"]!=0:raiseRuntimeError(f"启动失败:{data.get('msg','未知错误')}")returndata["data"]defconnect_selenium(ws_endpoint:str,webdriver_path:str):"""通过 Selenium 接入已启动的浏览器"""chrome_options=Options()# 关键:使用 debuggerAddress 连接到 AdsPower 浏览器chrome_options.add_experimental_option("debuggerAddress",ws_endpoint.replace("ws://",""))service=Service(executable_path=webdriver_path)driver=webdriver.Chrome(service=service,options=chrome_options)returndriverdefbatch_login_instagram(accounts:list):"""批量启动浏览器并访问 Instagram 登录页"""foraccountinaccounts:print(f"[{account['serial']}] 正在启动浏览器...")# 1. 启动浏览器browser_data=start_browser(account["user_id"],API_KEY)selenium_endpoint=browser_data["ws"]["selenium"]webdriver_path=browser_data["webdriver"]# 2. Selenium 接入driver=connect_selenium(selenium_endpoint,webdriver_path)try:# 3. 访问 Instagramdriver.get("https://www.instagram.com")time.sleep(3)# 等待页面加载current_url=driver.current_urlprint(f"[{account['serial']}] 当前页面:{current_url}")# 判断是否需要登录(如果 URL 变了说明已登录)if"accounts/login"incurrent_url:print(f"[{account['serial']}] 需要登录操作")else:print(f"[{account['serial']}] 已登录状态")exceptExceptionase:print(f"[{account['serial']}] 操作异常:{e}")finally:# 关闭浏览器,释放资源driver.quit()# 调用 stop_browser 彻底关闭 AdsPower 环境requests.get(f"{API_BASE}/api/v1/browser/stop",params={"user_id":account["user_id"],"api_key":API_KEY})print(f"[{account['serial']}] 浏览器已关闭")time.sleep(2)# 避免并发过快if__name__=="__main__":batch_login_instagram(ACCOUNT_LIST)

运行效果:

[account_001] 正在启动浏览器... [account_001] 当前页面: https://www.instagram.com/accounts/login/ [account_001] 需要登录操作 [account_001] 浏览器已关闭 [account_002] 正在启动浏览器... [account_002] 当前页面: https://www.instagram.com/ [account_002] 已登录状态 [account_002] 浏览器已关闭 ...

4.4 场景三:用 MCP Server 配合 AI Agent 做智能决策

这是最让我兴奋的场景——AI Agent 不只是执行脚本,还能根据环境状态做判断

用户:帮我检查这批 Instagram 账号的登录状态,登录失败的用 AI 生成一份报告 AI Agent 收到任务后: 1. 调用 get_browser_list 获取所有环境信息 2. 批量启动浏览器 3. 检测每个账号的 Instagram 登录状态 4. 汇总结果,AI 生成诊断报告 5. 调用 stop_all_browsers 清理环境

这种"AI 决策 + MCP 执行"的模式,是真正让 AI 从"聊天"走向"干活"的关键一步。

插图2


五 指纹配置:让每个账号看起来像真人

MCP Server 启动浏览器时,可以携带完整的指纹配置参数。我的研究结论是:AdsPower 支持 20+ 指纹维度,这是批量账号防关联的核心。

5.1 创建环境时指定指纹配置(V2 API)

importrequests API_KEY="your_api_key_here"API_BASE="http://local.adspower.net:50325"# 创建一个新环境,带指纹配置create_url=f"{API_BASE}/api/v1/user/create/v2"payload={"api_key":API_KEY,"name":"Instagram_US_001","group_id":0,# 默认分组"fingerprint_config":{"automatic_timezone":"1",# 自动基于 IP 设置时区"timezone":"America/New_York","webrtc":"forward",# WebRTC 走代理"location_switch":"1",# 自动基于 IP 设置位置"language":["en-US","en"],"ua":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","screen_resolution":"random",# 随机分辨率"fonts":["all"],# 加载所有字体"canvas":"1",# Canvas 添加噪音"webgl":"2",# WebGL 自定义模式"audio":"1",# 音频指纹添加噪音"hardware_concurrency":"8",# CPU 核数"device_memory":"8",# 内存 8GB},"user_proxy_config":{"proxy_type":"http","proxy_host":"proxy.example.com","proxy_port":"8080","proxy_user":"your_proxy_user","proxy_password":"your_proxy_password",}}response=requests.post(create_url,json=payload)print(response.json())

5.2 指纹配置核心维度说明

维度参数值我的建议
时区automatic_timezone: "1"配合代理 IP 使用,让时区与 IP 所在地一致
WebRTC"forward"多账号必须关闭或走代理,否则真实 IP 泄露
Canvas"1"添加噪音,防止 Canvas 指纹追踪
WebGL"2"自定义模式,比默认更安全
屏幕分辨率"random"避免多账号分辨率完全相同
字体["all"]字体是最常见的关联因子之一

💡重要提醒:指纹配置不是越多越好,也不是越强越好。真实感是关键——刻意伪造的指纹反而更容易被检测。最好通过 BrowserLeaks 实时检测每套配置的隔离效果。

插图3


六 实际应用场景

6.1 Instagram 矩阵管理

这是我正在做的项目:InsMatrixAutomation

核心需求:

  • 批量管理 20+ Instagram 账号
  • 每个账号独立指纹、独立代理 IP
  • AI 自动执行关注/点赞/评论操作

现有方案痛点

  • 传统 Selenium 脚本需要为每个账号写独立配置
  • 指纹伪造不够真实,容易关联封号
  • 批量操作时 IP 集中,容易被平台识别

AdsPower + MCP 的优势

  • 环境隔离彻底,指纹个性化配置
  • MCP Server 让 AI 直接控制环境切换
  • Local API 支持批量程序化管理

6.2 跨境电商多账号运营

适用于:

  • Amazon / eBay 多店铺管理
  • 社交媒体多账号发帖
  • 广告投放账户矩阵

6.3 自动化测试

用不同的指纹配置测试你的 Web 应用:

  • 不同浏览器指纹下的渲染差异
  • 反爬虫策略在不同指纹下的有效性
  • WebGL / Canvas 指纹的一致性验证

总结

维度内容
核心思路用 MCP 协议打通 AI Agent 与指纹浏览器,让 AI 直接控制批量账号环境
关键步骤1. 安装 Node.js ≥18;2. 克隆 AdsPower 仓库并构建;3. 配置 API Key;4. 接入 AI 编码助手
MCP 核心价值自然语言驱动浏览器操作,AI 决策链与执行链无缝衔接
代码要点启动浏览器 → Selenium 接入 → 执行操作 → 关闭环境
注意事项API Key 妥善保管;指纹配置要配合代理 IP;批量操作需控制并发节奏

参考资料

  • AdsPower 官方 GitHub 仓库
  • AdsPower Local API 官方文档
  • AdsPower 帮助中心
  • BrowserLeaks 指纹检测工具

作者:张大鹏
日期:2026-05-11
团队:大鹏 AI 教育
原创不易,转载需注明出处

http://www.jsqmd.com/news/795061/

相关文章:

  • 2026年彩盒厂家推荐排行榜:食品、手提、高档等各类彩盒印刷优质品牌之选! - 速递信息
  • 终极指南:3分钟掌握Translumo实时屏幕翻译工具,游戏外语学习两不误
  • 新手零代码搭建跨境独立站:从注册到出单,Taoify 全程保姆级教程
  • FGO自动化终极指南:告别枯燥刷本,每天节省3小时游戏时间
  • 保姆级教程|助睿 ETL 订单利润分流数据加工全流程(零代码 + 图文详解)
  • 2026年蒙自米线加盟品牌推荐 - mypinpai
  • Windows驱动管理终极指南:使用DriverStore Explorer释放系统空间
  • [Java][Leetcode middle] 54. 螺旋矩阵
  • PyVideoTrans技术栈解析:专业级开源视频翻译与AI配音解决方案
  • 开发者技能图谱实战指南:从知识碎片化到系统化工程能力构建
  • 从零构建MBTI运势应用:全栈技术拆解与工程实践
  • 政务远程帮办部署踩坑实录——从互联网到政务外网
  • Navicat重置终极指南:macOS数据库管理工具无限试用方案
  • 黔鑫门业门价格多少? - mypinpai
  • ROSGPT实践指南:用大语言模型实现自然语言机器人控制
  • FPGA多通道OFDM-MFSK水声通信系统设计实现【附程序】
  • 工业催化考研辅导班推荐:专门针对性培训机构评测 - michalwang
  • 基于Nostr协议构建去中心化AI社交网络:clawstr实战指南
  • 终极SPT-AKI存档编辑器使用指南:快速掌握塔科夫单机版角色定制
  • AI编码助手安全防护:为Cursor定制智能安全规则实践
  • 英雄联盟智能助手Seraphine:让每一场对局都更有把握
  • WeChatExporter:iOS微信聊天记录导出终极指南,让你真正拥有数据主权
  • 基于WebContainer的GitHub仓库转Markdown工具开发实践
  • 国内直连主流大模型API:ChatAnywhere转发服务全解析与实战
  • 4步掌握StreamCap:轻松实现跨平台直播自动录制
  • 告别FGO枯燥刷本:这款自动化助手如何每天为你节省3小时游戏时间?
  • 2026年必备:10款最新免费可用的降AI率工具 - 降AI实验室
  • 一般力学与力学基础考研辅导班推荐:专门针对性培训机构评测 - michalwang
  • 网盘直链下载助手深度解析:八大平台高效下载的完整技术方案
  • 金价高位急跌预警!乌鲁木齐人快找福正美变现避险 - 福正美黄金回收