Skip to content

Nstbrowser Node.js SDK

用于与Nstbrowser API v2交互的Node.js SDK

注意: 本文档适用于API v2,这是推荐版本,包含v1的所有功能以及附加功能。有关v1文档,请参阅README-v1.md。鼓励新用户使用v2以获得更稳定和标准化的体验。

概述

此SDK实现了Nstbrowser API v2,提供了一套全面的工具,用于管理浏览器配置文件、控制浏览器实例、管理本地浏览器数据以及利用Chrome DevTools Protocol (CDP)进行浏览器自动化。

此SDK使您可以:

  • 创建和管理具有详细指纹配置的浏览器配置文件
  • 单独或批量启动和停止浏览器实例
  • 为配置文件配置和管理代理
  • 管理配置文件标签以更好地组织
  • 清除浏览器缓存和Cookie
  • 使用Chrome DevTools Protocol (CDP)连接到浏览器
  • 通过与Puppeteer集成的CDP实现浏览器自动化

安装

使用npm:

bash
$ npm install nstbrowser-sdk-node
$ npm install nstbrowser-sdk-node

使用pnpm:

bash
$ pnpm install nstbrowser-sdk-node
$ pnpm install nstbrowser-sdk-node

使用yarn:

bash
$ yarn add nstbrowser-sdk-node
$ yarn add nstbrowser-sdk-node

开始使用

要使用此SDK,您需要一个来自Nstbrowser的API密钥:

javascript
import { NstBrowserV2 } from 'nstbrowser-sdk-node';

// 使用您的API密钥初始化客户端
const client = new NstBrowserV2('your_api_key', {
  timeout: 60000,
  apiAddress: 'http://localhost:8848/api/v2'
});

// 现在您可以使用各种服务
const profileId = 'your_profile_id';

// 启动浏览器实例
const startResponse = await client.browsers().startBrowser({ profileId });
console.log('Browser started:', startResponse);

// 停止浏览器实例
const stopResponse = await client.browsers().stopBrowser({ profileId });
console.log('Browser stopped:', stopResponse);
import { NstBrowserV2 } from 'nstbrowser-sdk-node';

// 使用您的API密钥初始化客户端
const client = new NstBrowserV2('your_api_key', {
  timeout: 60000,
  apiAddress: 'http://localhost:8848/api/v2'
});

// 现在您可以使用各种服务
const profileId = 'your_profile_id';

// 启动浏览器实例
const startResponse = await client.browsers().startBrowser({ profileId });
console.log('Browser started:', startResponse);

// 停止浏览器实例
const stopResponse = await client.browsers().stopBrowser({ profileId });
console.log('Browser stopped:', stopResponse);

与Puppeteer的CDP集成

此SDK最强大的功能之一是其与Puppeteer的无缝集成,用于浏览器自动化:

javascript
import { NstBrowserV2 } from 'nstbrowser-sdk-node';
import puppeteer from 'puppeteer-core';

async function automateWithPuppeteer() {
  const client = new NstBrowserV2('your_api_key');
  
  // 使用CDP连接到浏览器
  const cdpResponse = await client.cdpEndpoints().connectBrowser({
    profileId: 'your_profile_id',
    config: {
      headless: false,
      autoClose: false
    }
  });

  // 将Puppeteer连接到浏览器实例
  const browser = await puppeteer.connect({
    browserWSEndpoint: cdpResponse.data.webSocketDebuggerUrl,
    defaultViewport: null
  });

  // 使用Puppeteer进行自动化
  const page = await browser.newPage();
  await page.goto('https://example.com');
  
  // ... 执行其他操作
}
import { NstBrowserV2 } from 'nstbrowser-sdk-node';
import puppeteer from 'puppeteer-core';

async function automateWithPuppeteer() {
  const client = new NstBrowserV2('your_api_key');
  
  // 使用CDP连接到浏览器
  const cdpResponse = await client.cdpEndpoints().connectBrowser({
    profileId: 'your_profile_id',
    config: {
      headless: false,
      autoClose: false
    }
  });

  // 将Puppeteer连接到浏览器实例
  const browser = await puppeteer.connect({
    browserWSEndpoint: cdpResponse.data.webSocketDebuggerUrl,
    defaultViewport: null
  });

  // 使用Puppeteer进行自动化
  const page = await browser.newPage();
  await page.goto('https://example.com');
  
  // ... 执行其他操作
}

示例

此SDK在/examples/v2目录中提供了一套全面的示例。要运行示例:

  1. 导航到示例目录并安装依赖项:
bash
cd examples/v2
npm install
cd examples/v2
npm install
  1. examples/v2目录中创建一个.env文件并添加您的API密钥:
bash
echo "nstbrowser_api_key=your-api-key" > .env
echo "nstbrowser_api_key=your-api-key" > .env
  1. 运行任何示例:
bash
node browsers/startBrowser.js
node browsers/startBrowser.js

可用的示例按服务组织:

浏览器示例

  • browsers/getBrowserDebugger.js: 获取浏览器调试器信息以进行自动化
  • browsers/getBrowserPages.js: 获取有关浏览器页面的信息
  • browsers/getBrowsers.js: 获取具有状态信息的活动浏览器列表
  • browsers/startBrowser.js: 为特定配置文件启动浏览器
  • browsers/startBrowsers.js: 批量启动多个浏览器
  • browsers/startOnceBrowser.js: 使用自定义配置启动一次性浏览器
  • browsers/stopBrowser.js: 停止特定浏览器实例
  • browsers/stopBrowsers.js: 批量停止多个浏览器实例

配置文件示例

  • profiles/batchClearProfileTags.js: 批量清除多个配置文件的标签
  • profiles/batchCreateProfileTags.js: 批量为多个配置文件创建标签
  • profiles/batchResetProfileProxy.js: 批量重置多个配置文件的代理
  • profiles/batchUpdateProfileTags.js: 批量更新多个配置文件的标签
  • profiles/batchUpdateProxy.js: 批量更新多个配置文件的代理
  • profiles/clearProfileTags.js: 清除特定配置文件的所有标签
  • profiles/createProfile.js: 使用详细配置创建新配置文件
  • profiles/createProfileTags.js: 为特定配置文件创建新标签
  • profiles/deleteProfile.js: 删除特定配置文件
  • profiles/deleteProfiles.js: 批量删除多个配置文件
  • profiles/getProfileTags.js: 获取与配置文件关联的所有标签
  • profiles/getProfiles.js: 使用过滤选项获取配置文件
  • profiles/resetProfileProxy.js: 重置特定配置文件的代理配置
  • profiles/updateProfileProxy.js: 更新特定配置文件的代理配置
  • profiles/updateProfileTags.js: 更新特定配置文件的标签
  • profiles/getAllProfileGroups.js: 获取所有配置文件组
  • profiles/changeProfileGroup.js: 更改配置文件组
  • profiles/batchChangeProfileGroup.js: 批量更改配置文件组

本地数据示例

  • locals/clearProfileCache.js: 清除特定配置文件的浏览器缓存
  • locals/clearProfileCookies.js: 清除特定配置文件的浏览器Cookie

CDP 端点示例

  • cdpEndpoints/connectBrowser.js: 使用CDP连接到浏览器并使用Puppeteer进行自动化
  • cdpEndpoints/connectOnceBrowser.js: 使用CDP连接到一次性浏览器并使用Puppeteer进行自动化

支持

如需支持,请随时通过Discord联系我们。如需更详细的文档,请访问Nstbrowser官方文档:Nstbrowser API 文档