Skip to content

快速上手:接管候鸟环境

本章将通过一个简单的脚本,演示如何启动一个指定的候鸟环境,并用代码接管它。

实战脚本

请创建一个名为 start.js 的文件,并将以下代码复制进去:

javascript
const puppeteer = require('puppeteer-core');
const axios = require('axios'); // 请确保运行 npm install axios

async function startProject() {
  // 1. 设置配置信息
  const API_URL = 'http://127.0.0.1:8186'; // ApiServer 地址
  const SESSION_ID = '373808cb37bd63f5f7d92415e736e85f'; // 您的环境 ID

  try {
    // 2. 调用候鸟接口启动环境
    console.log('正在开启候鸟环境...');
    const response = await axios.post(`${API_URL}/api/v1/browser/start`, {
      Session_ID: SESSION_ID
    });

    if (response.data.code === 0) {
      // 3. 获取 WebSocket 连接地址
      const wsEndpoint = response.data.data.ws;
      console.log('环境开启成功,正在接管控制...');

      // 4. 使用 Puppeteer 连接到该环境
      const browser = await puppeteer.connect({
        browserWSEndpoint: wsEndpoint,
        defaultViewport: null // 使用浏览器默认窗口大小
      });

      // 5. 新开一个页面并导航
      const page = await browser.newPage();
      await page.goto('https://www.mbbrowser.com', { waitUntil: 'networkidle2' });

      console.log('当前页面标题:', await page.title());

      // 6. 操作完成后断开连接(环境会保持运行,除非你调用 stop 接口)
      await browser.disconnect();
      console.log('自动化操作完成!');
      
    } else {
      console.error('环境启动失败:', response.data.message);
    }
  } catch (error) {
    console.error('连接出错:', error.message);
  }
}

startProject();

关键点解析

  1. axios.post:先向 ApiServer 发送请求开启环境。环境不开启,Puppeteer 就没处连接。
  2. wsEndpoint:这是开启成功后返回的“唯一钥匙”,Puppeteer 凭此地址进入浏览器内部。
  3. puppeteer.connect:注意是 connect(连接已有浏览器),而不是 launch(启动新浏览器)。这就是指纹浏览器自动化的核心区别。
  4. browser.disconnect:当你的脚本写完,建议断开连接。这样即使脚本结束了,浏览器窗口通常还会留在桌面上,方便你观察或后续手动操作。

TIP

学会了接管环境?下一章 核心 API 通俗详解 教你如何让浏览器执行更复杂的命令。