自動化 API 參考

NestBrowser 提供本地 REST API,允許您透過程式碼控制瀏覽器環境。該 API 相容 ChromeDriver 標準,因此可與 SeleniumPuppeteerPlaywright 以及幾乎所有自動化框架協同使用。

🔒 API 功能僅在專業版和企業版中可用。

運作原理

  1. NestBrowser 在本地執行一個 HTTP 服務(預設:http://localhost:19222
  2. 呼叫 API 啟動環境 — NestBrowser 啟動瀏覽器並回傳 WebSocket 偵錯 URL
  3. 您的自動化程式碼透過標準 WebDriver 協議連線至該 URL
  4. 瀏覽器以完整的 NestBrowser 指紋設定執行

啟動 API 服務

  1. 開啟 NestBrowser → 設定API
  2. 開啟啟用 API 開關
  3. 記下 API 連接埠(預設:19222)

基本 API 用法

啟動環境

POST http://localhost:19222/api/v1/browser/start
Content-Type: application/json

{
  "profile_id": "您的環境ID"
}

回應:

{
  "code": 0,
  "data": {
    "ws": {
      "puppeteer": "ws://localhost:9222/devtools/browser/abc123",
      "selenium": "ws://localhost:9222/devtools/browser/abc123"
    },
    "http": "http://localhost:9222",
    "webdriver": "http://localhost:9222"
  }
}

停止環境

POST http://localhost:19222/api/v1/browser/stop
Content-Type: application/json

{
  "profile_id": "您的環境ID"
}

列出所有環境

GET http://localhost:19222/api/v1/profiles

與 Puppeteer 配合使用

const puppeteer = require('puppeteer-core');

async function main() {
  // 1. 透過 NestBrowser API 啟動環境
  const response = await fetch('http://localhost:19222/api/v1/browser/start', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ profile_id: '您的環境ID' })
  });
  const { data } = await response.json();

  // 2. 將 Puppeteer 連線至執行中的瀏覽器
  const browser = await puppeteer.connect({
    browserWSEndpoint: data.ws.puppeteer,
    defaultViewport: null
  });

  // 3. 控制瀏覽器
  const page = await browser.newPage();
  await page.goto('https://example.com');
  console.log(await page.title());

  // 4. 完成後停止環境
  await browser.disconnect();
  await fetch('http://localhost:19222/api/v1/browser/stop', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ profile_id: '您的環境ID' })
  });
}

main();

與 Selenium 配合使用

import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def start_profile(profile_id):
    result = requests.post(
        f"http://localhost:19222/api/v1/browser/start?id={profile_id}"
    )
    return result.json()["ws"]["selenium"]

debugger_addr = start_profile("your-profile-id")

options = Options()
options.add_experimental_option("debuggerAddress", debugger_addr)
driver = webdriver.Chrome(options=options)

driver.get("https://example.com")
print(driver.title)
driver.quit()

API 端點完整列表

方法端點描述
GET/api/v1/profiles列出所有環境
POST/api/v1/browser/start啟動環境
POST/api/v1/browser/stop停止環境
GET/api/v1/browser/list取得執行中的環境
POST/api/v1/browser/cookies/import匯入 Cookie
GET/api/v1/browser/cookies/export匯出 Cookie

錯誤代碼

代碼意義
0成功
1001環境不存在
1002環境已在執行中
1003代理連線失敗
5000伺服器內部錯誤