自動化 API 參考
NestBrowser 提供本地 REST API,允許您透過程式碼控制瀏覽器環境。該 API 相容 ChromeDriver 標準,因此可與 Selenium、Puppeteer、Playwright 以及幾乎所有自動化框架協同使用。
🔒 API 功能僅在專業版和企業版中可用。
運作原理
- NestBrowser 在本地執行一個 HTTP 服務(預設:
http://localhost:19222) - 呼叫 API 啟動環境 — NestBrowser 啟動瀏覽器並回傳 WebSocket 偵錯 URL
- 您的自動化程式碼透過標準 WebDriver 協議連線至該 URL
- 瀏覽器以完整的 NestBrowser 指紋設定執行
啟動 API 服務
- 開啟 NestBrowser → 設定 → API
- 開啟啟用 API 開關
- 記下 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 | 伺服器內部錯誤 |