AdsPower API自动化2026:批量创建/启动/关闭浏览器环境实战
斌哥工作室管理60多个广告账户,如果每个都手动打开、手动登录、手动操作、手动关闭,一天什么都不干也忙不完。我工作室用AdsPower的API接口实现了全自动化:批量创建环境、批量启动浏览器、批量绑定代理IP、Selenium自动登录和操作、批量关闭环境,全部用Python脚本跑。每天早上脚本自动启动所有环境检查广告账户状态,每天晚上自动关闭所有环境。60个账户的日常运维从原来4个人手动操作到现在1个脚本全自动,这篇文章把我的API自动化实战经验完整拆给你。
AdsPower API基础:Key获取和环境准备
AdsPower提供的是本地API——API服务运行在你电脑本地,通过HTTP请求调用。所有操作都在本地完成,数据不上传云端。
获取API Key
- 打开AdsPower客户端:登录你的AdsPower账号
- 进入API设置:点击左下角头像→API设置(或设置→API)
- 复制API Key:页面上会显示你的API Key,复制保存
- 确认API服务运行中:API服务默认运行在本地50325端口(可自定义),确保没有被防火墙拦截
API基础参数
| 参数 | 说明 | 默认值 |
|---|---|---|
| API URL前缀 | API基础地址 | http://local.adspower.net:50325 |
| API Key | 身份验证凭证 | 在客户端获取 |
| 请求方式 | 大部分接口用GET | GET |
| 返回格式 | JSON | application/json |
| 限流 | 每秒请求数限制 | 按套餐定 |
斌哥的提醒:API Key是你的AdsPower操作凭证,不要泄露给别人。如果Key泄露了,在API设置页面可以重新生成。另外API调用有频率限制,批量操作时加sleep间隔,不要一下发几百个请求。
批量创建浏览器环境
手动创建Profile点几下鼠标就行,但如果要一次性创建50个Profile,手动操作要30分钟。用API批量创建,1分钟搞定。
API接口
创建环境的接口是 /api/v1/user/create,核心参数:
| 参数 | 是否必填 | 说明 |
|---|---|---|
| name | 是 | Profile名称 |
| group_id | 否 | 分组ID,不填默认"未分组" |
| user_proxy_config | 否 | 代理配置(JSON) |
| fingerprint_config | 否 | 指纹配置(JSON) |
| repeat_config | 否 | 重复配置 |
| comment | 否 | 备注 |
Python批量创建脚本
import requests
import time
import json
API_BASE = "http://local.adspower.net:50325"
API_KEY = "你的API_KEY"
def create_profile(name, group_id="0", proxy_config=None, comment=""):
"""创建单个Profile"""
url = f"{API_BASE}/api/v1/user/create"
params = {
"api_key": API_KEY,
"name": name,
"group_id": group_id,
"comment": comment
}
if proxy_config:
params["user_proxy_config"] = json.dumps(proxy_config)
resp = requests.get(url, params=params)
data = resp.json()
if data.get("code") == 0:
print(f"创建成功: {name} -> ID: {data['data']['id']}")
return data["data"]["id"]
else:
print(f"创建失败: {name} -> {data.get('msg')}")
return None
def batch_create(prefix, count, group_id="0", proxy_list=None):
"""批量创建Profile"""
profile_ids = []
for i in range(1, count + 1):
name = f"{prefix}-{i:03d}"
proxy_config = None
if proxy_list and i <= len(proxy_list):
proxy = proxy_list[i - 1]
proxy_config = {
"proxy_type": "nucleus_v2",
"proxy_host": proxy["host"],
"proxy_port": proxy["port"],
"proxy_user": proxy["user"],
"proxy_password": proxy["password"]
}
profile_id = create_profile(name, group_id, proxy_config)
if profile_id:
profile_ids.append(profile_id)
time.sleep(1) # 间隔1秒避免限流
return profile_ids
# 示例:批量创建10个FB账户环境
proxy_list = [
{"host": "proxy1.ipfoxy.com", "port": "9001", "user": "user1", "password": "pass1"},
{"host": "proxy2.ipfoxy.com", "port": "9002", "user": "user2", "password": "pass2"},
# ... 更多代理
]
ids = batch_create("FB-US", 10, group_id="分组ID", proxy_list=proxy_list)
print(f"成功创建 {len(ids)} 个环境")
代理配置说明
批量创建时绑定代理IP是最常见的需求。AdsPower支持多种代理类型:
- socks5:proxy_type设为"socks5"
- http:proxy_type设为"http"
- nucleus_v2:AdsPower自带代理(如果有)
我用的代理是IPFoxy住宅代理(推荐码ip0001),每个Profile配独立的住宅IP,确保环境隔离。批量创建时把代理信息放在proxy_list里,脚本自动给每个Profile分配不同的IP。
批量启动和关闭浏览器环境
创建好Profile后,下一步是批量启动和关闭。这是日常使用频率最高的API操作。
启动环境API
接口:/api/v1/browser/start
| 参数 | 说明 |
|---|---|
| user_id | Profile ID(创建时返回的) |
| open_tabs | 启动后打开的URL(可选) |
| headless | 是否无头模式(1=无头,0=有头) |
关闭环境API
接口:/api/v1/browser/stop
| 参数 | 说明 |
|---|---|
| user_id | Profile ID |
批量启动/关闭脚本
import requests
import time
API_BASE = "http://local.adspower.net:50325"
API_KEY = "你的API_KEY"
def start_browser(user_id, headless=0):
"""启动单个浏览器环境"""
url = f"{API_BASE}/api/v1/browser/start"
params = {
"api_key": API_KEY,
"user_id": user_id,
"headless": headless
}
resp = requests.get(url, params=params, timeout=30)
data = resp.json()
if data.get("code") == 0:
ws_url = data["data"]["ws"]["selenium"]
debug_port = data["data"]["debug_port"]
print(f"启动成功: {user_id} -> port:{debug_port}")
return {"ws_url": ws_url, "debug_port": debug_port}
else:
print(f"启动失败: {user_id} -> {data.get('msg')}")
return None
def stop_browser(user_id):
"""关闭单个浏览器环境"""
url = f"{API_BASE}/api/v1/browser/stop"
params = {
"api_key": API_KEY,
"user_id": user_id
}
resp = requests.get(url, params=params)
data = resp.json()
if data.get("code") == 0:
print(f"关闭成功: {user_id}")
else:
print(f"关闭失败: {user_id} -> {data.get('msg')}")
def batch_start(user_ids, headless=0, interval=3):
"""批量启动"""
results = {}
for uid in user_ids:
info = start_browser(uid, headless)
if info:
results[uid] = info
time.sleep(interval) # 间隔启动避免资源占用过高
return results
def batch_stop(user_ids, interval=2):
"""批量关闭"""
for uid in user_ids:
stop_browser(uid)
time.sleep(interval)
# 示例:批量启动5个环境
profile_ids = ["k1abc123", "k2def456", "k3ghi789", "k4jkl012", "k5mno345"]
active = batch_start(profile_ids, headless=1) # 无头模式
print(f"成功启动 {len(active)} 个环境")
# 操作完成后批量关闭
batch_stop(profile_ids)
斌哥的实战经验:批量启动时间隔3秒比较稳。一次启动太多会卡死——10个以内安全,超过10个分批启动。headless=1(无头模式)适合纯自动化场景(不需要看界面),headless=0适合需要手动检查的场景。我日常跑自动化用无头模式,需要检查广告账户界面时用有头模式。
与Selenium集成:自动化操作浏览器
批量启动浏览器只是第一步,真正的价值在于启动后用Selenium/Puppeteer自动操作浏览器——自动登录广告账户、自动检查数据、自动修改设置。
Selenium连接AdsPower浏览器
AdsPower启动后会返回Selenium的WebSocket地址和debug端口,用这个连接浏览器:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests
import time
def connect_adspower(user_id, api_key):
"""启动AdsPower环境并用Selenium连接"""
# 1. 通过API启动浏览器
url = f"http://local.adspower.net:50325/api/v1/browser/start"
params = {"api_key": api_key, "user_id": user_id, "headless": "0"}
resp = requests.get(url, params=params, timeout=30)
data = resp.json()
if data["code"] != 0:
raise Exception(f"启动失败: {data['msg']}")
debug_port = data["data"]["debug_port"]
webdriver_path = data["data"]["webdriver"]
# 2. 用Selenium连接
options = Options()
options.debugger_address = f"127.0.0.1:{debug_port}"
driver = webdriver.Chrome(executable_path=webdriver_path, options=options)
return driver, user_id
def disconnect_adspower(driver, user_id, api_key):
"""关闭Selenium并停止AdsPower环境"""
driver.quit()
url = f"http://local.adspower.net:50325/api/v1/browser/stop"
params = {"api_key": api_key, "user_id": user_id}
requests.get(url, params=params)
# 示例:自动打开Facebook并截图
API_KEY = "你的API_KEY"
USER_ID = "k1abc123"
driver, uid = connect_adspower(USER_ID, API_KEY)
try:
driver.get("https://www.facebook.com")
time.sleep(3)
driver.save_screenshot("fb_check.png")
print(f"当前页面: {driver.title}")
finally:
disconnect_adspower(driver, uid, API_KEY)
自动化检查广告账户状态
我的日常自动化脚本:启动所有环境→自动登录各广告平台→检查广告账户状态→截图存档→关闭环境。这个脚本每天早上8点自动跑。
def check_account_status(user_id, api_key, platform_url):
"""检查单个广告账户状态"""
driver, uid = connect_adspower(user_id, api_key)
try:
driver.get(platform_url)
time.sleep(5)
# 检查是否需要登录
if "login" in driver.current_url.lower():
return {"user_id": user_id, "status": "需要登录", "screenshot": None}
# 截图
screenshot_path = f"screenshots/{user_id}.png"
driver.save_screenshot(screenshot_path)
# 提取页面关键信息
title = driver.title
return {"user_id": user_id, "status": "正常", "title": title, "screenshot": screenshot_path}
except Exception as e:
return {"user_id": user_id, "status": f"异常: {str(e)}", "screenshot": None}
finally:
disconnect_adspower(driver, uid, api_key)
# 批量检查所有FB账户
fb_ids = ["k1abc123", "k2def456", "k3ghi789"]
results = []
for uid in fb_ids:
result = check_account_status(uid, API_KEY, "https://business.facebook.com/adsmanager")
results.append(result)
time.sleep(5) # 间隔5秒
# 生成状态报告
for r in results:
print(f"{r['user_id']}: {r['status']}")
批量绑定和更换代理IP
有时候代理IP过期了需要批量更换,或者需要给已有的Profile重新绑定IP。AdsPower API支持修改Profile的代理配置。
更新代理API
接口:/api/v1/user/update
def update_proxy(user_id, proxy_config, api_key):
"""更新Profile的代理配置"""
url = f"http://local.adspower.net:50325/api/v1/user/update"
params = {
"api_key": api_key,
"user_id": user_id,
"user_proxy_config": json.dumps(proxy_config)
}
resp = requests.get(url, params=params)
return resp.json()
def batch_update_proxy(user_ids, proxy_list, api_key):
"""批量更新代理"""
for i, uid in enumerate(user_ids):
if i < len(proxy_list):
proxy = proxy_list[i]
proxy_config = {
"proxy_type": "socks5",
"proxy_host": proxy["host"],
"proxy_port": proxy["port"],
"proxy_user": proxy["user"],
"proxy_password": proxy["password"]
}
result = update_proxy(uid, proxy_config, api_key)
print(f"{uid}: {'成功' if result.get('code')==0 else '失败'}")
time.sleep(1)
定时任务自动化
把上述脚本配上定时任务,实现全自动日常运维:
Windows定时任务(任务计划程序)
- 打开任务计划程序:Win+R→taskschd.msc
- 创建基本任务:设置名称(如"AdsPower每日检查")
- 设置触发器:每天8:00执行
- 设置操作:启动程序→选择Python脚本路径
- 保存:任务会按计划自动运行
Linux定时任务(cron)
如果AdsPower跑在服务器上(AdsPower支持云端部署),用cron设置定时任务:
# 编辑crontab
crontab -e
# 每天8:00执行账户检查脚本
0 8 * * * /usr/bin/python3 /opt/scripts/adspower_daily_check.py
# 每天23:00关闭所有环境
0 23 * * * /usr/bin/python3 /opt/scripts/adspower_batch_stop.py
我的自动化时间表
| 时间 | 脚本 | 功能 |
|---|---|---|
| 08:00 | batch_start.py | 批量启动所有环境 |
| 08:05 | check_status.py | 自动登录检查所有广告账户状态 |
| 08:30 | export_data.py | 自动导出各平台广告数据 |
| 12:00 | midday_check.py | 中午检查广告消耗和异常 |
| 23:00 | batch_stop.py | 批量关闭所有环境 |
Puppeteer集成(Node.js方案)
除了Selenium,AdsPower也支持Puppeteer连接。如果你用Node.js做自动化,Puppeteer比Selenium更快:
const puppeteer = require('puppeteer');
const axios = require('axios');
async function connectAdspower(userId, apiKey) {
// 启动浏览器
const resp = await axios.get('http://local.adspower.net:50325/api/v1/browser/start', {
params: { api_key: apiKey, user_id: userId, headless: '0' }
});
if (resp.data.code !== 0) {
throw new Error(`启动失败: ${resp.data.msg}`);
}
const wsUrl = resp.data.data.ws.puppeteer;
const browser = await puppeteer.connect({ browserWSEndpoint: wsUrl });
return { browser, userId };
}
async function disconnectAdspower(browser, userId, apiKey) {
await browser.disconnect();
await axios.get('http://local.adspower.net:50325/api/v1/browser/stop', {
params: { api_key: apiKey, user_id: userId }
});
}
// 使用示例
async function main() {
const { browser, userId } = await connectAdspower('k1abc123', '你的API_KEY');
try {
const page = await browser.newPage();
await page.goto('https://www.facebook.com');
await page.screenshot({ path: 'fb_check.png' });
console.log('检查完成');
} finally {
await disconnectAdspower(browser, userId, '你的API_KEY');
}
}
main();
API自动化注意事项
| 注意事项 | 说明 |
|---|---|
| API限流 | 批量操作加sleep间隔,建议每次间隔1-3秒 |
| 资源占用 | 同时打开浏览器不超过电脑内存承受范围,10个以内安全 |
| API Key安全 | 不要硬编码在脚本中,用环境变量或配置文件 |
| 错误处理 | 每个API调用加try-catch,单个失败不影响整体 |
| 日志记录 | 记录每次操作的结果和时间,方便排查问题 |
| 无头模式 | 纯自动化用headless=1,需要看界面用headless=0 |
| 代理验证 | 启动环境后先验证代理IP是否生效再操作 |
完整自动化方案的工具栈
- AdsPower(优惠码bingefb):指纹浏览器+API接口,批量环境管理
- IPFoxy(推荐码ip0001):住宅代理IP,每个环境配独立IP
- Selenium/Puppeteer:浏览器自动化框架,操作广告平台
- Python:脚本语言,requests调用API+Selenium操作浏览器
- cron/任务计划程序:定时任务,自动执行脚本
2026年API自动化检查清单
- 获取API Key:在AdsPower客户端复制API Key,确认API服务运行中
- 批量创建环境:用/user/create接口+Python循环批量创建Profile
- 批量绑定代理:创建时或创建后用/user/update绑定IPFoxy住宅IP
- 批量启动:用/browser/start接口,间隔3秒,10个以内分批
- Selenium集成:通过debug端口连接浏览器,自动操作广告平台
- 批量关闭:用/browser/stop接口,操作完毕后关闭环境
- 定时任务:cron或任务计划程序设置每日自动检查
- 错误处理:每个API调用加try-catch+日志记录
- API Key安全:用环境变量存储,不要硬编码
- 资源管理:同时运行环境不超过内存承受范围
AdsPower API自动化不是什么高深技术,就是"API调用+Selenium操作+定时任务"三板斧。但这三板斧组合起来,能把你从每天重复打开关闭浏览器的机械劳动中彻底解放出来。60个账户的日常运维从4小时压缩到4分钟,省下的时间用来做策略分析和素材优化——这才是跨境广告运营该干的事。
需要AdsPower注册指导、API自动化脚本定制或跨境广告开户?直接联系我,微信 492683467 或 Telegram @Bingefb。
需要AdsPower注册或API自动化方案?
AdsPower注册指导 · API自动化脚本 · 多账户管理 · 跨境广告开户
微信 492683467 | Telegram @Bingefb | AdsPower优惠码 bingefb | IPFoxy推荐码 ip0001