Select Page

Stagehand 教學|AI 驅動的瀏覽器自動化神器,TypeScript 與 Python 都支援!

想用 AI 控制網頁自動化,但程式碼又要精準可靠,同時享受自然語言,高效又方便?那你絕不能錯過由 Browserbase 團隊推出的 Stagehand —— 這款專為 AI 時代設計的瀏覽器自動化框架,不僅支援 TypeScript 與 Python、可本地或雲端部署,還比 Browser‑Use 更快、更耐變動!

Stagehand 兼具控制力與智慧的 AI 瀏覽器自動化框架

Stagehand 是以 Playwright 為核心構建的 AI-native 自動化工具,它加入了 LLM 判斷能力,結合程式精準控制與自然語言指令,令自動化腳本更穩定、更智慧也更高效

  • 自然語言 + 程式碼混合操作:你可以用程式寫明確動作,也能用「act(‘點擊第一個 Stagehand 元件’)」這樣類人語法完成UI操作 。
  • 接口完整,支援察看、執行與資料萃取:核心三大命令 actobserveextract,讓操作更透明、更可控
  • 容錯與自恢復能力:UI 略有變動也不怕,Stagehand 的 observe + 快取策略讓腳本更具彈性
  • 完美整合 Playwright:所有 Playwright 腳本都能無縫升級 Stagehand,省心又高效

核心玩法!TypeScript/JavaScript 快速上手範例

// Use Playwright functions on the page object
const page = stagehand.page;
await page.goto("https://github.com/browserbase");

// Use act() to execute individual actions
await page.act("click on the stagehand repo");

// Use Computer Use agents for larger actions
const agent = stagehand.agent({
    provider: "openai",
    model: "computer-use-preview",
});
await agent.execute("Get to the latest PR");

// Use extract() to read data from the page
const { author, title } = await page.extract({
  instruction: "extract the author and title of the PR",
  schema: z.object({
    author: z.string().describe("The username of the PR author"),
    title: z.string().describe("The title of the PR"),
  }),
});

這段程式完整示範了初始化、導航、AI 驅動操作到資料萃取的流程,不僅省事,也大幅提升開發效率。

Stagehand 與 Browser-Use 比較

功能面Stagehand(此文主角)Browser-Use
控制精準度Token 級動作掌控 + 自然語言指令混合攻擊角度偏自然語言,程式控制較弱
容錯能力observe + 快取策略,對 DOM 變化更耐受缺少自恢復機制
雲端支援原生整合 Browserbase,輕鬆雲端部署需額外集成,無預設雲平台支援
語言支援TypeScript / Python主要依賴 Python
AI 整合天生結合 LLM,支援複雜任務拆解依賴外部 LLM,不那麼一體化

只要先學四個指令,快速上手

指定去那一個網頁

goto():

    # 初始化
    page = stagehand.page
    # 指定去那一個頁面
    await page.goto("https://rain.tips/")

使用自然語言操作

act():

    await page.act("點選確定按鈕");

抓取數據資料

extract():

    post = await page.extract("取得標題")

預覽功能

observe():

   links = await page.observe("找到頁面中的所有連結")

實戰快速導覽

安裝

# 用 pip
pip install stagehand python-dotenv

# 安裝playwright
python -m playwright install

# 裝 chromium 瀏覽器
python -m playwright install chromium

建立 .env

export BROWSERBASE_API_KEY="your_browserbase_api_key"
export BROWSERBASE_PROJECT_ID="your_browserbase_project_id"
export MODEL_API_KEY="your_model_api_key"  # OpenAI, Anthropic, etc.

建立程式碼 main.py

import asyncio
import os
from stagehand import Stagehand, StagehandConfig
from dotenv import load_dotenv

load_dotenv()

async def main():
    config = StagehandConfig(
        env="BROWSERBASE",
        api_key=os.getenv("BROWSERBASE_API_KEY"),
        project_id=os.getenv("BROWSERBASE_PROJECT_ID"),
        model_name="gpt-4o",
        model_api_key=os.getenv("MODEL_API_KEY")
    )
    
    stagehand = Stagehand(config)
    
    try:
        await stagehand.init()
        page = stagehand.page
        
        await page.goto("https://docs.stagehand.dev/")
        await page.act("click the quickstart link")
        
        result = await page.extract("extract the main heading of the page")
        
        print(f"Extracted: {result}")
        
    finally:
        await stagehand.close()

if __name__ == "__main__":
    asyncio.run(main())

驗證與測試

python main.py 

若要用本地端的瀏覽器的話,可以改成下面的程式碼

import asyncio
import os
from dotenv import load_dotenv
from stagehand import StagehandConfig, Stagehand

load_dotenv()

async def main():
    # 检查API密钥是否设置
    api_key = os.getenv("OPENAI_API_KEY")

    config = StagehandConfig(
        env="LOCAL",  # 本地运行
        # AI模型配置 - 使用环境变量
        model_name="gpt-4o-mini",  # 使用更便宜的模型
        model_api_key=api_key,  # 从环境变量读取

        # 本地运行配置
        headless=False,  # 显示浏览器窗口
        verbose=3,  # 详细日志
        debug_dom=True,  # DOM调试
    )

    # 使用配置创建Stagehand实例
    stagehand = Stagehand(config)

    # 初始化Stagehand(启动浏览器会话)
    await stagehand.init()

    # 获取页面对象,用于后续的页面操作
    page = stagehand.page

    await page.goto("https://rain.tips/")

    # # 使用observe()取得文章的連結
    blog_links = await page.observe("取得文章中的所有連結)
    print(f"✅ Page link: {blog_links}")

    await page.act(blog_links[0]) 
    data_post_1 = await page.extract("取得文章的標題和內文")
    print(f"✅ 文章資訊如下: {data_post_1}")

if __name__ == "__main__":
    asyncio.run(main())

總結:為什麼 Stagehand 是下一代自動化框架?

  • 語言直覺更自然,人類可理解
  • 對 UI 變化具彈性、不易失效
  • 結合 LLM,自動拆解任務,效率提升數倍
  • 支援本地與雲端,開發與生產環境都得心應手

Stagehand 正重新定義瀏覽器自動化,不再只是死板指令,而是一場「程式控+AI 智能」的完美結合,無論對開發者或 AI 自動化愛好者,都是一大利器。快一起駕馭它,打造更強、更智慧的自動化流程!

參考資料

BrowserBase

GitHub Stagehand

Demo

開發說明文件

https://www.aivi.fyi/aiagents/introduce-stagehand

WireShark-在Windows內如何解密https

WireShark-在Windows內如何解密https

Wireshark 是一款功能強大的網絡協議分析工具,可以幫助我們深入了解網絡流量,在日常使用中,我們有時需要檢查 HTTPS 流量,這些流量通常是加密的,通過配置 Wireshark,我們可以抓取並解碼 SSL/TLS 的加密資訊。

步驟 1:下載並安裝 Wireshark

首先,從 Wireshark 官方網站 下載適合您系統的安裝包,並完成安裝。安裝過程中,建議選擇安裝 WinPcap 或 Npcap,這是用於抓取網絡數據包的必要工具。

步驟 2:在 Windows 中設置用戶變量

要讓瀏覽器記錄 SSL/TLS 的密鑰,我們需要設置環境變量。

  1. 新增用戶變量
    • 打開「系統屬性」>「高級系統設置」>「環境變量」。
    • 在「用戶變量」區域中,點擊「新增」。
  2. 設置變量名稱與變量值
    • 變量名SSLKEYLOGFILE
    • 變量值C:\logs
  3. 點擊「確定」保存變量。

步驟 3:使用 Chrome 訪問 HTTPS 網頁

  1. 打開 Google Chrome 瀏覽器。
  2. 瀏覽任意 HTTPS 網頁(例如 https://example.com)。
  3. 在剛才設置的 C:\logs 路徑下,會生成一個名為 sslkeylog.log 的文件。
    該文件包含了瀏覽器和服務器之間進行加密通信的 Premaster Secret。

這個設置的作用是讓支持 SSLKEYLOGFILE 的應用程序(例如 Chrome)記錄密鑰到指定文件中。

步驟 4:配置 Wireshark 解碼 SSL 流量

接下來,我們需要將生成的密鑰文件導入 Wireshark,以便解碼 HTTPS 流量。

  1. 打開 Wireshark。
  2. 點擊選單中的「編輯」>「首選項」。
  3. 在彈出的「首選項」窗口中:
    • 展開左側的「Protocols」。
    • 找到並選擇「TLS」協議。
  4. 在右側的「(Pre)-Master-Secret log filename」欄位中,填入生成的 sslkeylog.log 文件的完整路徑,例如:

步驟 5:開始抓取 HTTPS 流量

  1. 在 Wireshark 中選擇網絡介面(例如 Wi-Fi 或有線網絡)。
  2. 點擊「開始捕獲」按鈕(或快捷鍵 Ctrl+E)。
  3. 打開瀏覽器並訪問任意 HTTPS 網頁。

步驟 6:檢查解碼的內容

  1. 在抓取的數據包中,選擇任意 Client HelloServer Hello 消息。
  2. Wireshark 會根據 sslkeylog.log 自動解碼加密的數據流,您可以在「解碼」區域中看到未加密的數據內容。
HubSpot:一站式行銷、銷售與客戶關係管理解決方案

HubSpot:一站式行銷、銷售與客戶關係管理解決方案

HubSpot 是一款功能強大的整合式行銷、銷售和客戶服務軟體,為企業提供了從行銷自動化到客戶關係管理 (CRM) 的多種解決方案。成立於 2006 年,HubSpot 以「吸引力行銷」(Inbound Marketing) 理念為核心,幫助企業透過內容行銷、社交媒體互動、以及顧客關係管理等工具來吸引、轉換和滿足客戶需求。以下是 HubSpot 的主要功能及優勢介紹:

1. 行銷自動化

HubSpot 的行銷工具涵蓋電子郵件行銷、社交媒體管理、SEO、廣告管理和內容創建。透過其強大的行銷自動化功能,企業可以針對不同的潛在客戶設計自動化工作流程,提供個性化的電子郵件、行銷信息和跟進活動,幫助提高行銷效率並增加潛在客戶的轉化率。

2. CRM (客戶關係管理)

HubSpot 的 CRM 是其核心功能之一,它能夠免費使用,且提供了強大的客戶資料管理和互動追蹤功能。用戶可以輕鬆管理客戶資料、跟蹤客戶行為,並記錄所有的溝通互動,讓業務團隊能夠更深入了解客戶需求,提供更好的服務。

3. 銷售工具

HubSpot 提供多種銷售支援工具,像是銷售管道管理、線索打分、預測分析和報表工具等,幫助業務團隊自動化重複性的任務,專注於建立與潛在客戶的關係。透過 HubSpot 的銷售功能,業務人員可以追蹤線索的進度、提醒後續行動,並利用個性化的銷售策略來提升銷售效率。

4. 客戶服務管理

HubSpot 的客戶服務工具包括客戶支援票務系統、聊天機器人、知識庫、客戶回饋和調查功能,讓企業可以提供一致且高效的客戶支援服務。企業可以追蹤每位客戶的服務歷史紀錄,確保所有團隊成員都能夠準確回應客戶的需求。

5. 數據分析和報表

HubSpot 的報表和分析工具能夠幫助企業衡量行銷、銷售和服務績效。企業可以輕鬆生成多種報表來評估行銷活動效果、銷售業績以及客戶滿意度,讓決策團隊能夠依據數據做出更有效的商業策略。

6. 與其他應用程式的整合

HubSpot 提供眾多第三方應用程式的整合,包括 Salesforce、Shopify、Slack、Google Workspace 等。透過這些整合,企業可以將所有業務流程集中在 HubSpot 中,減少切換應用的時間,並提高工作效率。

延伸閱讀

Windows下如何釋放被占用的port

Windows下如何釋放被占用的port

使用 docker 時候,常常遇到被占用的 port 要處理,這邊記錄下正確的處理方法

找到占用port的程式

netstat -ano | findstr 8080

會得到下面的輸出,最後面一個是 PID

查詢程式資訊

tasklist | findstr 8080

刪除占用的程式行程

舉例來說,我要刪除佔用了 port 50912 的程式,由上圖知道他的 PID 是 6664,那就輸入以下指令即可

taskkill /T /F /PID 6664

docker – anything – root – password,如果你不清楚docker密碼的處理方法

如果遇到別人包裝好的 docker (99%都是),常會遇到沒有 root 密碼的情形,這時候有幾個解決方法,列舉如下

直接使用 root 的權限進入系統

docker exec -u 0 -it mycontainer bash

或是下面的指令也可以

docker exec -u root -it --workdir / <containerName> bash

修改 root 密碼

passwd root

安裝 sudo

apt-get install sudo
usermod -aG sudo dev

參考資料

https://stackoverflow.com/questions/28721699/root-password-inside-a-docker-container

PDFgear-好用還免費的PDF編輯器

PDFgear-好用還免費的PDF編輯器

看到完全免費的軟體就覺得很佛心,但沒想到還支援AI重點摘要,還有個平台都可以使用,功能還比一堆付費軟體還強大,就真的一定要大力的推廣這麼優秀的軟體

免費的PDF編輯軟體PDFgear

特色功能介紹

內建AI摘要:快速幫忙重點整理

文檔編輯:可以編輯文字,也可以加入圖片

合併PDF:常用來加入 EXCEL 做出來的圖表

拆分PDF:可以設定如何拆分PDF,再重新合併一份文件

多平台支援:支援 windows, mac, ios, android

PDFgear核心功能

官網下載

https://www.pdfgear.com

相關資訊