Grasp 文档Grasp 文档
GitHub
  • English
  • 简体中文
  • 日本語
GitHub
  • English
  • 简体中文
  • 日本語
  • 快速开始

    • Grasp SDK
    • 身份验证
  • SDK 文档

    • TypeScript/Node.js SDK
    • Python SDK

身份验证

您可以通过两种方式使用 Grasp 进行身份验证:

1. 环境变量(推荐)

设置 GRASP_KEY 环境变量:

export GRASP_KEY=your_api_key_here

2. 直接在代码中使用

在代码中直接传递 API 密钥:

TypeScript/Node.js
import { Grasp } from '@grasplabs/grasp';

// 使用环境变量
const grasp = new Grasp();
const session = await grasp.launch();

// 或者直接传递 API 密钥
const graspWithKey = new Grasp({ apiKey: 'your_api_key_here' });
const sessionWithKey = await graspWithKey.launch();
Python
import os
from grasp_sdk import Grasp

# 使用环境变量
grasp = Grasp()
async with grasp.launch_context() as session:
    # 您的代码
    pass

# 或者直接传递 API 密钥
grasp_with_key = Grasp(api_key='your_api_key_here')
async with grasp_with_key.launch_context() as session:
    # 您的代码
    pass

配置参数

Grasp 实例选项

创建 Grasp 实例时,您可以设置以下参数:

参数类型必需默认值描述
apiKeystring是*$GRASP_KEYAPI 密钥(如果设置了 GRASP_KEY 环境变量则可选)

启动选项

调用 launch() 方法时,您可以设置以下配置参数:

参数类型必需默认值描述
browser.typeenum否chromium远程浏览器类型:chromium 或 chrome-stable
browser.headlessboolean否true无头模式(无头模式节省资源但可能更容易被检测为机器人)
browser.adblockboolean否false启用广告拦截(实验性功能)
keepAliveMSinteger否900000 (15分钟)会话保活时间(毫秒)(最大值:86400000 - 24小时)
timeoutinteger否300000 (5分钟)启动超时时间(毫秒)
debugboolean否false启用调试模式以获得更详细的终端输出
logLevelenum否info日志级别:debug、info、warn、error

最佳实践

  1. 使用环境变量:通过使用环境变量而不是硬编码来保护您的 API 密钥安全
  2. 会话管理:始终正确关闭会话以避免资源泄漏和意外费用
  3. keepAliveMS 配置:根据您的用例设置适当的保活时间(最大 24 小时)
  4. 错误处理:实现适当的错误处理以优雅地处理网络问题和超时

会话生命周期

TypeScript/Node.js
import { Grasp } from '@grasplabs/grasp';
import { chromium } from 'playwright';

const grasp = new Grasp();

try {
  // 启动会话
  const session = await grasp.launch({
    browser: {
      type: 'chromium',
      headless: true,
      adblock: true
    },
    keepAliveMS: 600000, // 10 分钟
    debug: true
  });

  // 连接到浏览器
  const browser = await chromium.connectOverCDP(session.browser.endpoint);
  const page = await browser.newPage();
  
  // 执行您的自动化任务
  await page.goto('https://example.com');
  await page.screenshot({ path: 'screenshot.png' });
  
  // 清理资源
  await browser.close();
  await session.close();
} catch (error) {
  console.error('会话错误:', error);
}
Python
import asyncio
from grasp_sdk import Grasp
from playwright.async_api import async_playwright

async def main():
    grasp = Grasp()
    
    # 推荐:使用上下文管理器自动清理
    async with grasp.launch_context({
        'browser': {
            'type': 'chromium',
            'headless': True,
            'adblock': True
        },
        'keep_alive_ms': 600000,  # 10 分钟
        'debug': True
    }) as session:
        async with async_playwright() as p:
            browser = await p.chromium.connect_over_cdp(session.browser.endpoint)
            page = await browser.new_page()
            
            # 执行您的自动化任务
            await page.goto('https://example.com')
            await page.screenshot(path='screenshot.png')
            
            await browser.close()
    # 会话在退出上下文时自动关闭

if __name__ == '__main__':
    asyncio.run(main())
Prev
Grasp SDK