Hyperbrowser 浏览器代理工具
Hyperbrowser 是一个运行、控制浏览器代理和扩展无头浏览器的平台。它允许您大规模启动和管理浏览器会话,并提供易于使用的解决方案,以满足任何网络抓取需求,如抓取单个页面或爬取整个站点。
关键特性:
- 即时可扩展性 - 在几秒钟内启动数百个浏览器会话,无需基础设施方面的烦恼
- 简单集成 - 与 Puppeteer 和 Playwright 等流行工具无缝协作
- 强大的 API - 易于使用的 API,用于抓取/爬取任何网站,以及更多功能
- 绕过反机器人措施 - 内置隐身模式、广告拦截、自动验证码解决和代理轮换
这个笔记本提供了一个快速概览,以便开始使用Hyperbrowser工具。
有关 Hyperbrowser 的更多信息,请访问 Hyperbrowser 网站,或者如果您想查看文档,可以访问 Hyperbrowser 文档。
浏览器代理
Hyperbrowser 提供了强大的浏览器代理工具,使 AI 模型能够程序化地与网页浏览器进行交互。这些浏览器代理可以导航网站、填写表单、点击按钮、提取数据,并执行复杂的网络自动化任务。
浏览器代理特别有用之处在于:
- 从复杂网站进行网页抓取和数据提取
- 自动化重复的网页任务
- 与需要身份验证的Web应用程序交互
- 跨多个网站进行研究
- 测试 Web 应用程序
Hyperbrowser 提供三种类型的浏览器代理工具:
- Browser Use Tool: 一个通用的浏览器自动化工具
- OpenAI CUA 工具: 与 OpenAI 的计算机使用代理集成
- Claude计算机使用工具: 与Anthropic的Claude集成以进行计算机使用
概览
集成细节
| 工具 | 包 | 本地 | 序列化 | JS支持 |
|---|---|---|---|---|
| Browser Use Tool | langchain-hyperbrowser | ❌ | ❌ | ❌ |
| OpenAI CUA Tool | langchain-hyperbrowser | ❌ | ❌ | ❌ |
| Claude Computer Use Tool | langchain-hyperbrowser | ❌ | ❌ | ❌ |
设置
要访问Hyperbrowser工具,您需要安装langchain-hyperbrowser集成包,并创建一个Hyperbrowser账户并获取API密钥。
Credentials
前往 Hyperbrowser 注册并生成API密钥。完成这些步骤后,请设置HYPERBROWSER_API_KEY环境变量:
export HYPERBROWSER_API_KEY=<your-api-key>
安装
安装 langchain-hyperbrowser。
%pip install -qU langchain-hyperbrowser
Instantiation
浏览器使用工具
The HyperbrowserBrowserUseTool 是一个工具,用于使用浏览器代理执行网络自动化任务,特别是Browser-Use 代理。
from langchain_hyperbrowser import HyperbrowserBrowserUseTool
tool = HyperbrowserBrowserUseTool()
OpenAI CUA 工具
The HyperbrowserOpenAICUATool 是一个专门的工具,通过超浏览器利用了 OpenAI 的计算机使用代理(CUA)功能。
from langchain_hyperbrowser import HyperbrowserOpenAICUATool
tool = HyperbrowserOpenAICUATool()
Claude 计算机使用工具
The HyperbrowserClaudeComputerUseTool 是一个专门的工具,通过超浏览器利用 Claude 的计算机使用能力。
from langchain_hyperbrowser import HyperbrowserClaudeComputerUseTool
tool = HyperbrowserClaudeComputerUseTool()
Invocation
基本用法
浏览器使用工具
from langchain_hyperbrowser import HyperbrowserBrowserUseTool
tool = HyperbrowserBrowserUseTool()
result = tool.run({"task": "Go to Hacker News and summarize the top 5 posts right now"})
print(result)
{'data': 'The top 5 posts on Hacker News right now are:\n1. Stop Syncing Everything - https://sqlsync.dev/posts/stop-syncing-everything/\n2. Move fast, break things: A review of Abundance by Ezra Klein and Derek Thompson - https://networked.substack.com/p/move-fast-and-break-things\n3. DEDA – Tracking Dots Extraction, Decoding and Anonymisation Toolkit - https://github.com/dfd-tud/deda\n4. Electron band structure in germanium, my ass (2001) - https://pages.cs.wisc.edu/~kovar/hall.html\n5. Show HN: I vibecoded a 35k LoC recipe app - https://www.recipeninja.ai', 'error': None}
OpenAI CUA 工具
from langchain_hyperbrowser import HyperbrowserOpenAICUATool
tool = HyperbrowserOpenAICUATool()
result = tool.run(
{"task": "Go to Hacker News and get me the title of the top 5 posts right now"}
)
print(result)
{'data': 'Here are the titles of the top 5 posts on Hacker News right now:\n\n1. "DEDA – Tracking Dots Extraction, Decoding and Anonymisation Toolkit"\n2. "A man powers home for eight years using a thousand old laptop batteries"\n3. "Electron band structure in Germanium, my ass"\n4. "Bletchley code breaker Betty Webb dies aged 101"\n5. "Show HN: Zig Topological Sort Library for Parallel Processing"', 'error': None}
Claude 计算机使用工具
from langchain_hyperbrowser import HyperbrowserClaudeComputerUseTool
tool = HyperbrowserClaudeComputerUseTool()
result = tool.run({"task": "Go to Hacker News and summarize the top 5 posts right now"})
print(result)
{'data': "Now I'll summarize the top 5 posts on Hacker News as of April 1, 2025:\n\n### Top 5 Hacker News Posts Summary\n\n1. **A man powers home for eight years using a thousand old laptop batteries** (techoreon.com)\n - 267 points, posted 5 hours ago\n - An innovative DIY project where someone managed to power their home using recycled laptop batteries for an extended period.\n\n2. **Electron band structure in germanium, my ass** (wisc.edu)\n - 611 points, posted 8 hours ago\n - Academic or technical discussion about electron band structure in germanium, possibly with a controversial or humorous take given the title.\n\n3. **Bletchley code breaker Betty Webb dies aged 101** (bbc.com)\n - 575 points, posted 8 hours ago\n - Obituary for Betty Webb, who worked as a code breaker at Bletchley Park during WWII, passing away at the age of 101.\n\n4. **Show HN: Zig Topological Sort Library for Parallel Processing** (github.com/williamw520)\n - 55 points, posted 3 hours ago\n - A developer sharing a library written in Zig programming language for topological sorting that supports parallel processing.\n\n5. **The Myst Graph: A New Perspective on Myst** (githr.com)\n - 107 points, posted 5 hours ago\n - An article presenting a new analysis or visualization of the classic video game Myst, likely using graph theory.\n\nThese are the top 5 posts currently trending on Hacker News as of April 1, 2025.", 'error': None}
自定义会话选项
所有工具支持自定义会话选项:
result = tool.run(
{
"task": "Go to npmjs.com, and tell me when react package was last updated.",
"session_options": {
"session_options": {"use_proxy": True, "accept_cookies": True}
},
}
)
print(result)
{'data': 'I have found that the react package was last published 11 hours ago. This is the most recently updated package I could find.', 'error': None}
Async Usage
所有工具支持异步使用:
async def browse_website():
tool = HyperbrowserBrowserUseTool()
result = await tool.arun(
{
"task": "Go to npmjs.com, click the first visible package, and tell me when it was updated"
}
)
return result
result = await browse_website()
{'data': 'The page displays information about the "Example Domain," stating that it is used for illustrative purposes and can be utilized without permission. There\'s a link to "More information..." but no specific contact details are provided.', 'error': None}
使用于代理
如何在代理中使用任何Hyperbrowser工具:<br/>
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_hyperbrowser import browser_use_tool
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
llm = ChatOpenAI(temperature=0)
# You can use any of the three tools here
browser_use_tool = HyperbrowserBrowserUseTool()
agent = create_react_agent(llm, [browser_use_tool])
user_input = "Go to npmjs.com, and tell me when react package was last updated."
for step in agent.stream(
{"messages": user_input},
stream_mode="values",
):
step["messages"][-1].pretty_print()
================================[1m Human Message [0m=================================
Go to npmjs.com, and tell me when react package was last updated.
==================================[1m Ai Message [0m==================================
Tool Calls:
hyperbrowser_browser_use (call_pkAaDjn6kKH9yT3rHDb4hmET)
Call ID: call_pkAaDjn6kKH9yT3rHDb4hmET
Args:
task: Go to npmjs.com and find the last updated date of the React package.
session_options: None
=================================[1m Tool Message [0m=================================
Name: hyperbrowser_browser_use
{"data": "The last updated date of the React package is a day ago.", "error": null}
==================================[1m Ai Message [0m==================================
The React package was last updated a day ago.
配置选项
Claude计算机使用、OpenAI CUA和浏览器使用有以下参数可用:
task: 使用代理执行的任务max_steps: 该智能代理完成任务所能采取的最大交互步骤数session_options: 浏览器会话配置
对于更多详细信息,请参阅相应的API参考: