上一篇 下一篇 分享链接 返回 返回顶部

一套命令跑通 AI 浏览器 API:从打开网页到截图提取数据

发布人:慈云数据-客服中心 发布时间:15小时前 阅读量:2

AI浏览器 API接口调用教程|附完整命令

随着 AI Agent、自动化测试、数据采集、智能办公等场景快速发展,“AI浏览器”正在成为很多开发者的新工具。所谓 AI 浏览器,通常指的是一种具备浏览器环境、页面访问能力、DOM 操作能力、截图能力、表单填写能力,并且可以结合大模型进行理解与决策的自动化浏览器服务。

与传统浏览器自动化工具不同,AI浏览器往往不仅能“打开网页、点击按钮”,还可以通过 API 接口接收自然语言任务,例如:

  • 打开某个网站并总结页面内容;
  • 自动登录后台并导出报表;
  • 根据网页内容判断下一步操作;
  • 截取页面截图并返回图片地址;
  • 提取网页中的结构化数据;
  • 在网页上执行搜索、填写表单、点击按钮等操作。

本文将以通用 AI浏览器 API 的调用方式为例,完整讲解从创建会话、访问网页、执行浏览器动作、获取页面内容、截图、关闭会话等流程,并附上 curl、Python、Node.js 等完整命令示例。

说明:不同厂商的 AI浏览器 API 路径和字段可能略有差异,本文使用的是通用示例格式。你只需要将 BASE_URLAPI_KEY、接口路径和参数替换为你所使用平台的实际配置即可。


一、准备工作

在调用 AI浏览器 API 之前,你通常需要准备以下内容:

  1. 一个可用的 AI浏览器服务账号;
  2. 一个 API Key;
  3. API 服务地址;
  4. 本地命令行工具,例如 curl
  5. 如果使用代码调用,需要安装 Python 或 Node.js。

本文统一使用以下变量作为示例:

BASE_URL="https://api.example.com"
API_KEY="your_api_key_here"

在真实环境中,你需要将其替换为实际内容。例如:

BASE_URL="https://api.your-ai-browser.com"
API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"

为了方便后续命令调用,可以先在终端中设置环境变量。

Linux / macOS 设置环境变量

export BASE_URL="https://api.example.com"
export API_KEY="your_api_key_here"

Windows PowerShell 设置环境变量

$env:BASE_URL="https://api.example.com"
$env:API_KEY="your_api_key_here"

设置完成后,后续命令就可以直接读取环境变量。


二、AI浏览器 API 的基本调用流程

一个完整的 AI浏览器 API 调用流程通常如下:

  1. 创建浏览器会话;
  2. 打开目标网页;
  3. 执行浏览器动作;
  4. 获取页面内容或截图;
  5. 让 AI 分析页面;
  6. 返回结果;
  7. 关闭浏览器会话。

可以把 AI浏览器理解成一个“云端浏览器实例”。你通过 API 向它发送命令,它在远程执行操作,然后把结果返回给你。

常见 API 类型包括:

类型 说明
创建会话 创建一个独立浏览器环境
页面导航 打开指定 URL
点击操作 点击按钮、链接、菜单
输入文本 在输入框中填写内容
执行脚本 在页面中执行 JavaScript
页面截图 获取当前页面截图
内容提取 提取 HTML、文本、表格等
AI任务 通过自然语言描述任务
关闭会话 释放浏览器资源

三、创建浏览器会话

首先需要创建一个浏览器会话。每个会话可以理解为一个独立的浏览器窗口,拥有自己的 Cookie、缓存、页面状态等。

curl 命令

curl -X POST "$BASE_URL/v1/browser/sessions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "browser": "chromium",
    "headless": true,
    "viewport": {
      "width": 1280,
      "height": 800
    },
    "locale": "zh-CN",
    "timezone": "Asia/Shanghai"
  }'

示例响应

{
  "id": "session_abc123",
  "status": "running",
  "browser": "chromium",
  "created_at": "2026-06-04T10:00:00Z"
}

其中最重要的是 id 字段,例如:

session_abc123

后续所有操作都需要带上这个会话 ID。

为了方便演示,可以将会话 ID 保存为变量:

SESSION_ID="session_abc123"

四、打开指定网页

创建会话后,就可以让 AI浏览器访问网页。

假设我们要打开百度首页:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/navigate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.baidu.com",
    "wait_until": "networkidle",
    "timeout": 30000
  }'

参数说明:

参数 含义
url 要访问的网址
wait_until 等待页面加载完成的条件
timeout 超时时间,单位毫秒

常见 wait_until 取值包括:

load
domcontentloaded
networkidle

如果目标网页较复杂,建议使用 networkidle,表示网络请求基本结束后再继续执行下一步。


五、获取当前页面信息

打开网页后,可以获取当前页面标题、URL、HTML 或纯文本内容。

获取页面标题和 URL

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/page" \
  -H "Authorization: Bearer $API_KEY"

示例响应:

{
  "url": "https://www.baidu.com/",
  "title": "百度一下,你就知道"
}

获取页面 HTML

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/content" \
  -H "Authorization: Bearer $API_KEY"

获取页面纯文本

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/text" \
  -H "Authorization: Bearer $API_KEY"

返回示例:

{
  "text": "新闻 hao123 地图 贴吧 视频 图片 网盘 更多..."
}

如果你的目标是让 AI 总结页面内容,一般建议获取纯文本即可,因为 HTML 中包含大量标签、脚本和样式,会增加模型处理成本。


六、执行点击操作

AI浏览器常见操作之一是点击页面元素。点击方式通常有两种:

  1. 根据 CSS Selector 点击;
  2. 根据自然语言描述点击。

方式一:使用 CSS Selector 点击

例如点击搜索按钮:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/click" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "#su",
    "timeout": 10000
  }'

方式二:使用自然语言点击

一些 AI浏览器支持自然语言定位元素,例如:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/ai/click" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instruction": "点击页面上的搜索按钮",
    "timeout": 10000
  }'

自然语言点击适合页面结构复杂、CSS Selector 不稳定的场景。例如后台管理系统、动态页面、低代码平台等。


七、输入文本内容

输入文本通常需要指定输入框。

使用 Selector 输入

例如在百度搜索框中输入关键词:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/type" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "#kw",
    "text": "AI浏览器 API接口调用教程",
    "clear": true,
    "delay": 50
  }'

参数说明:

参数 说明
selector 输入框 CSS Selector
text 要输入的内容
clear 输入前是否清空原内容
delay 模拟键盘输入间隔

然后点击搜索按钮:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/click" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "#su"
  }'

等待搜索结果加载:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/wait" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "milliseconds": 3000
  }'

八、使用 AI 指令完成网页任务

AI浏览器的核心价值在于,它不仅能执行固定命令,还能根据自然语言理解目标任务。

例如,你可以发送如下任务:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/ai/task" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "task": "在当前页面搜索“AI浏览器 API接口调用教程”,然后总结搜索结果第一页中排名靠前的三条内容。",
    "max_steps": 8,
    "return_format": "markdown"
  }'

示例返回:

{
  "status": "completed",
  "steps": [
    "识别搜索框",
    "输入关键词",
    "点击搜索按钮",
    "等待结果页加载",
    "读取前三条搜索结果"
  ],
  "result": "### 搜索结果摘要\n1. ...\n2. ...\n3. ..."
}

这种方式适合以下场景:

  • 页面结构不固定;
  • 需要根据页面内容判断下一步;
  • 需要提取、总结、归纳网页内容;
  • 需要模拟真实用户操作;
  • 不想手动维护大量 Selector。

不过需要注意,自然语言任务比固定 API 操作更灵活,但也更依赖模型能力和页面可访问性。在生产环境中,建议将关键流程拆成多个明确步骤,并对返回结果做校验。


九、页面截图

截图是 AI浏览器非常实用的能力,常用于监控页面状态、生成报告、保存操作结果、调试自动化流程。

截取当前可视区域

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/screenshot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_page": false,
    "format": "png"
  }'

截取完整页面

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/screenshot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_page": true,
    "format": "png"
  }'

示例响应:

{
  "url": "https://cdn.example.com/screenshots/session_abc123_001.png",
  "format": "png",
  "width": 1280,
  "height": 3200
}

如果接口返回的是 Base64 图片,也可以保存为本地文件:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/screenshot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_page": true,
    "format": "png",
    "encoding": "base64"
  }' > screenshot_response.json

然后使用脚本解析 Base64 并保存。


十、执行 JavaScript 脚本

如果需要更灵活地读取页面元素、执行滚动、修改 DOM,可以通过 API 执行 JavaScript。

获取页面标题

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/evaluate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "document.title"
  }'

获取所有链接

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/evaluate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "Array.from(document.querySelectorAll(\"a\")).map(a => ({ text: a.innerText, href: a.href })).filter(item => item.text || item.href)"
  }'

页面滚动到底部

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/evaluate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "window.scrollTo(0, document.body.scrollHeight); true;"
  }'

对于无限滚动页面,可以配合等待命令多次执行滚动:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/evaluate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "window.scrollTo(0, document.body.scrollHeight);"
  }'

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/wait" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "milliseconds": 2000
  }'

十一、提取结构化数据

AI浏览器经常用于从网页中提取结构化信息,例如商品名称、价格、文章标题、发布时间、链接等。

假设当前页面是一个文章列表页,可以使用如下命令:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/extract" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instruction": "提取当前页面中的文章列表,包括标题、摘要、发布时间和链接。",
    "schema": {
      "type": "object",
      "properties": {
        "articles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "summary": {
                "type": "string"
              },
              "published_at": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "required": ["title", "url"]
          }
        }
      },
      "required": ["articles"]
    }
  }'

示例返回:

{
  "articles": [
    {
      "title": "AI浏览器是什么?",
      "summary": "本文介绍 AI浏览器的基本概念和应用场景。",
      "published_at": "2026-06-01",
      "url": "https://example.com/article/1"
    },
    {
      "title": "如何通过 API 调用 AI浏览器",
      "summary": "教程包含 curl、Python、Node.js 示例。",
      "published_at": "2026-06-02",
      "url": "https://example.com/article/2"
    }
  ]
}

结构化提取的好处是返回结果更加稳定,适合进入数据库、表格、BI 系统或后续自动化流程。


十二、上传文件或处理文件下载

部分 AI浏览器支持文件上传和下载处理。例如自动上传简历、导入 Excel、下载报表等。

上传文件到浏览器会话

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/files" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@./report.xlsx"

示例响应:

{
  "file_id": "file_123456",
  "filename": "report.xlsx",
  "size": 20480
}

将文件绑定到上传控件

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/upload" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "input[type=file]",
    "file_id": "file_123456"
  }'

获取下载文件列表

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/downloads" \
  -H "Authorization: Bearer $API_KEY"

示例响应:

{
  "downloads": [
    {
      "file_id": "download_001",
      "filename": "data.csv",
      "url": "https://cdn.example.com/downloads/data.csv"
    }
  ]
}

十三、关闭浏览器会话

浏览器会话会占用服务器资源。任务完成后,建议及时关闭。

curl -X DELETE "$BASE_URL/v1/browser/sessions/$SESSION_ID" \
  -H "Authorization: Bearer $API_KEY"

示例响应:

{
  "id": "session_abc123",
  "status": "closed"
}

在生产环境中,即使任务失败,也应该在异常处理逻辑中关闭会话,避免资源泄漏。


十四、完整 curl 调用示例

下面给出一个完整流程:创建会话、打开百度、输入关键词、点击搜索、等待结果、获取文本、截图、关闭会话。

export BASE_URL="https://api.example.com"
export API_KEY="your_api_key_here"

CREATE_RESPONSE=$(curl -s -X POST "$BASE_URL/v1/browser/sessions" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "browser": "chromium",
    "headless": true,
    "viewport": {
      "width": 1280,
      "height": 800
    }
  }')

echo "$CREATE_RESPONSE"

SESSION_ID=$(echo "$CREATE_RESPONSE" | jq -r '.id')

echo "SESSION_ID=$SESSION_ID"

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/navigate" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.baidu.com",
    "wait_until": "networkidle"
  }'

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/type" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "#kw",
    "text": "AI浏览器 API接口调用教程",
    "clear": true
  }'

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/actions/click" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "selector": "#su"
  }'

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/wait" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "milliseconds": 3000
  }'

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/text" \
  -H "Authorization: Bearer $API_KEY"

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/screenshot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_page": true,
    "format": "png"
  }'

curl -X DELETE "$BASE_URL/v1/browser/sessions/$SESSION_ID" \
  -H "Authorization: Bearer $API_KEY"

注意:上面的脚本使用了 jq 来解析 JSON。如果你的系统没有安装,可以使用以下命令安装。

macOS

brew install jq

Ubuntu / Debian

sudo apt update
sudo apt install -y jq

十五、Python 调用示例

如果你希望在后端服务、定时任务或数据处理脚本中调用 AI浏览器 API,可以使用 Python。

安装 requests

pip install requests

完整 Python 示例

import requests
import time

BASE_URL = "https://api.example.com"
API_KEY = "your_api_key_here"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

def create_session():
    url = f"{BASE_URL}/v1/browser/sessions"
    payload = {
        "browser": "chromium",
        "headless": True,
        "viewport": {
            "width": 1280,
            "height": 800
        },
        "locale": "zh-CN"
    }
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()["id"]

def navigate(session_id, target_url):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}/navigate"
    payload = {
        "url": target_url,
        "wait_until": "networkidle",
        "timeout": 30000
    }
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()

def type_text(session_id, selector, text):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}/actions/type"
    payload = {
        "selector": selector,
        "text": text,
        "clear": True
    }
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()

def click(session_id, selector):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}/actions/click"
    payload = {
        "selector": selector
    }
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()

def get_text(session_id):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}/text"
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    return response.json()

def screenshot(session_id):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}/screenshot"
    payload = {
        "full_page": True,
        "format": "png"
    }
    response = requests.post(url, headers=headers, json=payload)
    response.raise_for_status()
    return response.json()

def close_session(session_id):
    url = f"{BASE_URL}/v1/browser/sessions/{session_id}"
    response = requests.delete(url, headers=headers)
    response.raise_for_status()
    return response.json()

def main():
    session_id = None
    try:
        session_id = create_session()
        print("创建会话成功:", session_id)

        navigate(session_id, "https://www.baidu.com")
        print("页面打开成功")

        type_text(session_id, "#kw", "AI浏览器 API接口调用教程")
        click(session_id, "#su")

        time.sleep(3)

        text_result = get_text(session_id)
        print("页面文本:")
        print(text_result.get("text", "")[:1000])

        image_result = screenshot(session_id)
        print("截图结果:", image_result)

    except requests.HTTPError as e:
        print("HTTP 请求失败:", e)
        if e.response is not None:
            print(e.response.text)
    except Exception as e:
        print("执行异常:", e)
    finally:
        if session_id:
            close_result = close_session(session_id)
            print("会话已关闭:", close_result)

if __name__ == "__main__":
    main()

运行命令:

python ai_browser_demo.py

十六、Node.js 调用示例

对于前端工程化、服务端 Node.js 项目或自动化脚本,也可以使用 Node.js 调用。

初始化项目

mkdir ai-browser-demo
cd ai-browser-demo
npm init -y
npm install axios

创建 index.js

const axios = require("axios");

const BASE_URL = "https://api.example.com";
const API_KEY = "your_api_key_here";

const client = axios.create({
  baseURL: BASE_URL,
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json"
  },
  timeout: 30000
});

async function createSession() {
  const res = await client.post("/v1/browser/sessions", {
    browser: "chromium",
    headless: true,
    viewport: {
      width: 1280,
      height: 800
    },
    locale: "zh-CN"
  });
  return res.data.id;
}

async function navigate(sessionId, url) {
  const res = await client.post(`/v1/browser/sessions/${sessionId}/navigate`, {
    url,
    wait_until: "networkidle"
  });
  return res.data;
}

async function typeText(sessionId, selector, text) {
  const res = await client.post(`/v1/browser/sessions/${sessionId}/actions/type`, {
    selector,
    text,
    clear: true
  });
  return res.data;
}

async function click(sessionId, selector) {
  const res = await client.post(`/v1/browser/sessions/${sessionId}/actions/click`, {
    selector
  });
  return res.data;
}

async function wait(sessionId, milliseconds) {
  const res = await client.post(`/v1/browser/sessions/${sessionId}/wait`, {
    milliseconds
  });
  return res.data;
}

async function getText(sessionId) {
  const res = await client.get(`/v1/browser/sessions/${sessionId}/text`);
  return res.data;
}

async function takeScreenshot(sessionId) {
  const res = await client.post(`/v1/browser/sessions/${sessionId}/screenshot`, {
    full_page: true,
    format: "png"
  });
  return res.data;
}

async function closeSession(sessionId) {
  const res = await client.delete(`/v1/browser/sessions/${sessionId}`);
  return res.data;
}

async function main() {
  let sessionId = null;

  try {
    sessionId = await createSession();
    console.log("创建会话成功:", sessionId);

    await navigate(sessionId, "https://www.baidu.com");
    console.log("页面打开成功");

    await typeText(sessionId, "#kw", "AI浏览器 API接口调用教程");
    await click(sessionId, "#su");
    await wait(sessionId, 3000);

    const text = await getText(sessionId);
    console.log("页面文本:", text.text ? text.text.slice(0, 1000) : text);

    const screenshot = await takeScreenshot(sessionId);
    console.log("截图结果:", screenshot);

  } catch (error) {
    if (error.response) {
      console.error("接口错误:", error.response.status, error.response.data);
    } else {
      console.error("执行异常:", error.message);
    }
  } finally {
    if (sessionId) {
      const result = await closeSession(sessionId);
      console.log("会话已关闭:", result);
    }
  }
}

main();

运行命令:

node index.js

十七、常见错误与排查方法

1. 401 Unauthorized

表示 API Key 无效或没有正确传递。

检查请求头是否包含:

Authorization: Bearer your_api_key_here

也要确认 API Key 没有多余空格、换行或过期。


2. 404 Not Found

通常说明接口路径错误,或者 SESSION_ID 不存在。

请检查:

  • BASE_URL 是否正确;
  • 接口版本是否为 /v1
  • 会话 ID 是否真实存在;
  • 会话是否已经被关闭。

3. 408 / 504 Timeout

表示页面加载或任务执行超时。

解决建议:

  • 增加 timeout
  • 将复杂任务拆分成多个步骤;
  • 使用 wait_until: "domcontentloaded"
  • 检查目标网站是否访问缓慢;
  • 避免一次性执行过长的 AI 任务。

4. Selector 找不到

如果点击或输入时报错元素不存在,可以检查:

  • 页面是否加载完成;
  • Selector 是否正确;
  • 元素是否在 iframe 中;
  • 元素是否需要滚动后才出现;
  • 页面是否根据设备或语言发生变化。

可以先获取 HTML:

curl -X GET "$BASE_URL/v1/browser/sessions/$SESSION_ID/content" \
  -H "Authorization: Bearer $API_KEY"

或者截图确认页面状态:

curl -X POST "$BASE_URL/v1/browser/sessions/$SESSION_ID/screenshot" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_page": true
  }'

十八、生产环境最佳实践

在实际项目中调用 AI浏览器 API,建议遵循以下原则。

1. 会话及时关闭

每个浏览器会话都会消耗计算资源。无论任务成功还是失败,都应该在 finally 或异常处理逻辑中关闭会话。

2. 任务拆分

不要把所有操作都写进一个超长 AI 指令中。例如:

打开网站,登录后台,进入报表页,选择日期,导出 Excel,下载文件,然后分析数据。

更推荐拆成多个步骤:

  1. 打开登录页;
  2. 输入账号密码;
  3. 确认登录成功;
  4. 进入报表页;
  5. 选择日期;
  6. 导出文件;
  7. 下载并处理文件。

这样更容易调试,也更稳定。

3. 关键步骤做校验

例如登录之后,可以检查页面是否出现“退出登录”或用户昵称;导出之后,可以检查下载列表是否生成文件;提交表单之后,可以检查是否出现成功提示。

4. 控制调用频率

如果短时间内大量创建浏览器会话,可能触发平台限流或目标网站风控。建议增加队列、重试、限速和日志。

5. 保护敏感信息

不要把 API Key、账号密码、Cookie 写死在代码中。推荐使用环境变量或密钥管理服务。

例如:

export API_KEY="your_api_key_here"
export LOGIN_USERNAME="your_username"
export LOGIN_PASSWORD="your_password"

Python 中读取:

import os

API_KEY = os.getenv("API_KEY")
USERNAME = os.getenv("LOGIN_USERNAME")
PASSWORD = os.getenv("LOGIN_PASSWORD")

十九、总结

AI浏览器 API 本质上是“浏览器自动化能力 + AI理解能力”的结合。通过 API,你可以像控制普通浏览器一样完成打开网页、点击按钮、输入文本、截图、提取内容等操作;同时也可以使用自然语言任务,让 AI 根据页面内容自动判断和执行下一步。

本文完整介绍了 AI浏览器 API 的基础调用流程,包括:

  • 创建浏览器会话;
  • 打开网页;
  • 获取页面内容;
  • 点击和输入;
  • 执行 AI 任务;
  • 页面截图;
  • 执行 JavaScript;
  • 提取结构化数据;
  • 文件上传和下载;
  • 关闭浏览器会话;
  • curl、Python、Node.js 完整调用示例;
  • 常见错误排查与生产环境最佳实践。

如果你只是做简单的自动化操作,可以优先使用 Selector 方式,稳定且成本较低;如果页面复杂、结构变化频繁,或者任务需要根据上下文判断,则可以使用 AI 指令方式。实际项目中,最推荐的方案是“固定 API 操作 + AI 辅助判断”结合使用,这样既能保证稳定性,也能发挥 AI浏览器的智能优势。

目录结构
全文