首页 / 博客 / AdsPower API自动化2026
Devices🔥 API自动化2026-08-28

AdsPower API自动化2026:批量创建/启动/关闭浏览器环境实战

author斌哥工作室
·阅读 16 分钟

管理60多个广告账户,如果每个都手动打开、手动登录、手动操作、手动关闭,一天什么都不干也忙不完。我工作室用AdsPower的API接口实现了全自动化:批量创建环境、批量启动浏览器、批量绑定代理IP、Selenium自动登录和操作、批量关闭环境,全部用Python脚本跑。每天早上脚本自动启动所有环境检查广告账户状态,每天晚上自动关闭所有环境。60个账户的日常运维从原来4个人手动操作到现在1个脚本全自动,这篇文章把我的API自动化实战经验完整拆给你。

AdsPower API基础:Key获取和环境准备

AdsPower提供的是本地API——API服务运行在你电脑本地,通过HTTP请求调用。所有操作都在本地完成,数据不上传云端。

获取API Key

  1. 打开AdsPower客户端:登录你的AdsPower账号
  2. 进入API设置:点击左下角头像→API设置(或设置→API)
  3. 复制API Key:页面上会显示你的API Key,复制保存
  4. 确认API服务运行中:API服务默认运行在本地50325端口(可自定义),确保没有被防火墙拦截

API基础参数

参数说明默认值
API URL前缀API基础地址http://local.adspower.net:50325
API Key身份验证凭证在客户端获取
请求方式大部分接口用GETGET
返回格式JSONapplication/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支持多种代理类型:

我用的代理是IPFoxy住宅代理(推荐码ip0001),每个Profile配独立的住宅IP,确保环境隔离。批量创建时把代理信息放在proxy_list里,脚本自动给每个Profile分配不同的IP。

批量启动和关闭浏览器环境

创建好Profile后,下一步是批量启动和关闭。这是日常使用频率最高的API操作。

启动环境API

接口:/api/v1/browser/start

参数说明
user_idProfile ID(创建时返回的)
open_tabs启动后打开的URL(可选)
headless是否无头模式(1=无头,0=有头)

关闭环境API

接口:/api/v1/browser/stop

参数说明
user_idProfile 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定时任务(任务计划程序)

  1. 打开任务计划程序:Win+R→taskschd.msc
  2. 创建基本任务:设置名称(如"AdsPower每日检查")
  3. 设置触发器:每天8:00执行
  4. 设置操作:启动程序→选择Python脚本路径
  5. 保存:任务会按计划自动运行

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:00batch_start.py批量启动所有环境
08:05check_status.py自动登录检查所有广告账户状态
08:30export_data.py自动导出各平台广告数据
12:00midday_check.py中午检查广告消耗和异常
23:00batch_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是否生效再操作

完整自动化方案的工具栈

2026年API自动化检查清单

  1. 获取API Key:在AdsPower客户端复制API Key,确认API服务运行中
  2. 批量创建环境:用/user/create接口+Python循环批量创建Profile
  3. 批量绑定代理:创建时或创建后用/user/update绑定IPFoxy住宅IP
  4. 批量启动:用/browser/start接口,间隔3秒,10个以内分批
  5. Selenium集成:通过debug端口连接浏览器,自动操作广告平台
  6. 批量关闭:用/browser/stop接口,操作完毕后关闭环境
  7. 定时任务:cron或任务计划程序设置每日自动检查
  8. 错误处理:每个API调用加try-catch+日志记录
  9. API Key安全:用环境变量存储,不要硬编码
  10. 资源管理:同时运行环境不超过内存承受范围

AdsPower API自动化不是什么高深技术,就是"API调用+Selenium操作+定时任务"三板斧。但这三板斧组合起来,能把你从每天重复打开关闭浏览器的机械劳动中彻底解放出来。60个账户的日常运维从4小时压缩到4分钟,省下的时间用来做策略分析和素材优化——这才是跨境广告运营该干的事。

需要AdsPower注册指导、API自动化脚本定制或跨境广告开户?直接联系我,微信 492683467 或 Telegram @Bingefb。

分享到:

需要AdsPower注册或API自动化方案?

AdsPower注册指导 · API自动化脚本 · 多账户管理 · 跨境广告开户

微信 492683467 | Telegram @Bingefb | AdsPower优惠码 bingefb | IPFoxy推荐码 ip0001