Skip to content

快速上手:接管候鸟浏览器环境

本章提供可以直接拷贝运行的 Python 脚本,带您从零到成功接管候鸟指纹环境,完成第一次自动化操作。


完整脚本(拷贝即用)

创建文件 start_selenium.py,粘贴以下代码后修改配置区域:

python
import requests
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

# ============================
# 配置区域:修改为您自己的信息
# ============================
API_URL    = "http://127.0.0.1:8186"
SESSION_ID = "替换成您的环境ID"        # 在候鸟右键→复制环境ID获取
# 候鸟安装目录下的 chromedriver.exe 路径(或填 None 使用 Selenium Manager 自动匹配)
DRIVER_PATH = r"C:\Program Files (x86)\Mbbrowser_v7.10.20.219\chromedriver.exe"


def start_browser():
    """
    第一步:通知候鸟 ApiServer 开启指定环境
    第二步:从返回值中取出 debuggerAddress
    第三步:用 Selenium 接管该环境
    第四步:执行业务逻辑
    """

    # ── 第一步:开启候鸟环境 ──────────────────────────
    print("⏳ 正在开启候鸟指纹环境...")
    try:
        response = requests.post(
            f"{API_URL}/api/v1/browser/start",
            json={"Session_ID": SESSION_ID},
            timeout=30
        )
        data = response.json()
    except requests.exceptions.ConnectionError:
        print("❌ 无法连接到 ApiServer,请确认 ApiServer 已启动且端口正确!")
        return

    if data.get("code") != 0:
        print(f"❌ 环境启动失败:{data.get('message')}")
        return

    # ── 第二步:提取远程调试地址 ──────────────────────
    # data["data"]["http"] 格式如:127.0.0.1:9222
    debugger_address = data["data"]["http"]
    print(f"✅ 环境已开启,远程调试地址:{debugger_address}")

    # ── 第三步:配置 Selenium 接管候鸟环境 ───────────
    chrome_options = Options()
    # 这是接管已有浏览器(而不是新建)的关键参数!
    chrome_options.add_experimental_option("debuggerAddress", debugger_address)

    # 若有候鸟自带的 chromedriver,指定路径;否则留 None 由 Selenium Manager 自动处理
    if DRIVER_PATH:
        service = Service(executable_path=DRIVER_PATH)
        driver = webdriver.Chrome(service=service, options=chrome_options)
    else:
        driver = webdriver.Chrome(options=chrome_options)

    print("🎉 Selenium 接管成功!")

    # ── 第四步:执行您的业务逻辑 ─────────────────────
    try:
        # 打开目标网址
        driver.get("https://www.mbbrowser.com")
        print(f"📄 当前页面标题:{driver.title}")

        # 等待 3 秒,方便肉眼观察浏览器动作
        time.sleep(3)

        print("✅ 脚本执行完毕!")
    finally:
        # 重要:这里只是"断开 Selenium 的连接",候鸟浏览器环境会继续保持运行
        # 如果您想彻底关闭浏览器,请调用 ApiServer 的 /api/v1/browser/stop 接口
        driver.quit()


if __name__ == "__main__":
    start_browser()

运行脚本:

bash
python start_selenium.py

预期输出

⏳ 正在开启候鸟指纹环境...
✅ 环境已开启,远程调试地址:127.0.0.1:9222
🎉 Selenium 接管成功!
📄 当前页面标题:候鸟防关联浏览器 - 多账号安全运营解决方案
✅ 脚本执行完毕!

关键代码逐行解析

1. 调用 ApiServer 开启环境

python
response = requests.post(
    f"{API_URL}/api/v1/browser/start",
    json={"Session_ID": SESSION_ID}
)
  • 这一步告诉候鸟:"帮我打开 Session_ID 是 XXX 的那个指纹环境"
  • ApiServer 收到请求后,会启动对应的 Chrome 实例,并开放远程调试端口

2. 提取 debuggerAddress

python
debugger_address = data["data"]["http"]  # 如:127.0.0.1:9222
  • http 字段里是 Chrome 的 远程调试端口地址(通常是 127.0.0.1:端口号
  • 每个候鸟环境的端口号都不同,由候鸟自动分配,保证多环境并发不冲突

3. 设置 debuggerAddress 接管浏览器(最关键的一步!)

python
chrome_options.add_experimental_option("debuggerAddress", debugger_address)
driver = webdriver.Chrome(options=chrome_options)

这就是候鸟 Selenium 自动化与普通 Selenium 最本质的区别:

操作普通 Selenium候鸟 Selenium
创建 driver新建一个空白的 Chrome 窗口连接并接管 已有的候鸟指纹浏览器
指纹状态毫无指纹,裸奔状态完整指纹(UA、Canvas、WebGL、IP 全部就位)
Cookie 状态空的,需要重新登录保留上次的登录状态(如果之前已登录过)

4. 结束后的处理

python
driver.quit()  # 断开 Selenium 控制(候鸟环境继续运行)

NOTE

driver.quit() 只是断开 Selenium 对浏览器的控制连接,不会关闭候鸟浏览器窗口

如果您希望完全关闭浏览器,需要额外调用:

python
requests.post(f"{API_URL}/api/v1/browser/stop", json={"Session_ID": SESSION_ID})

常见问题排查

❓ 报错 Cannot connect to the Service

原因chromedriver.exe 版本与候鸟内核版本不匹配。

解决

  1. 使用候鸟安装目录自带的 chromedriver.exe,在 Service 中指定路径
  2. 或者删掉 DRIVER_PATH 配置(设为 None),让 Selenium Manager 自动处理

❓ 报错 ConnectionError: Cannot connect to ApiServer

原因:ApiServer 没有启动,或端口被占用。

解决

  1. 确认 ApiServer 终端窗口还在运行,没有被关闭
  2. 确认 API_URL 中的端口和 --port 参数一致
  3. 检查防火墙是否屏蔽了 8186 端口

❓ 报错 code != 0 环境启动失败

原因:Session_ID 不正确,或该环境已在运行中。

解决

  1. 在候鸟界面右键确认复制的是正确的 Session_ID
  2. 如果环境已在运行,可以先调用 stop 接口关闭再重新开启

❓ 浏览器打开了,但界面不是之前登录的状态

原因:这是第一次开启该环境,还没有登录过,Cookie 是空的。

解决:这是正常情况。接下来请阅读 核心 API 详解 学习如何注入 Cookie 或自动登录。


TIP

脚本跑起来了?下一章 核心 API 通俗详解 教你如何用 Selenium 完成更复杂的操作:元素定位、输入、点击、等待、截图……全都有!