ให้ Claude ใช้เบราว์เซอร์และคอมแทนเรา: computer use กับ browser use เข้า SDK แล้ว
Anthropic ใส่ computer use และ browser use toolsets ลงใน SDK ของ Claude ทั้ง Python และ TypeScript (beta) SDK รัน loop ตรวจ URL policy และสร้าง tool_result ให้ เราเขียนแค่ driver หรือใช้ของ Browser Use, Browserbase, E2B, Daytona พร้อมผลลองรัน quickstart จริง โครงโค้ด และ 6 ข้อความปลอดภัยที่ต้องทำก่อนใช้

ใครเคยอยากให้ AI เปิดเว็บ กดปุ่ม กรอกฟอร์มแทนเรา แล้วพอไปอ่านวิธีทำก็เจอว่าต้องเขียนโค้ดวนรับคำสั่งเอง แปลงคำสั่งเป็นคลิกเอง ส่งผลกลับเอง จนเลิกไปก่อน
วันที่ 8 ตุลาคม 2026 ClaudeDevs ประกาศว่า computer use และ browser use toolsets อยู่ใน SDK ของ Claude แล้ว ทั้ง Python และ TypeScript งานวนรับส่งคำสั่งทั้งหมด SDK ทำให้ เราเหลือแค่เขียนส่วนที่สั่งเบราว์เซอร์หรือหน้าจอจริง บทความนี้อธิบายว่ามันทำงานยังไง ลองรันตัวอย่างของ Anthropic ให้ดู และสรุปเรื่องความปลอดภัยที่ต้องทำก่อนใช้จริง
Computer use กับ browser use คืออะไร
สองอย่างนี้คือเครื่องมือที่ให้ Claude ทำงานบนหน้าจอแทนคน
- Browser use Claude สั่งเบราว์เซอร์ เช่น เปิดเว็บ อ่านหน้า คลิก พิมพ์
- Computer use Claude สั่งทั้งเดสก์ท็อป ดูภาพหน้าจอ ขยับเมาส์ กดคีย์บอร์ด
แต่ Claude ไม่ได้กดเองจริงๆ ครับ API แค่บอกว่า Claude อยากคลิกตรงไหนหรือพิมพ์อะไร คนที่ต้องไปกดจริงคือโค้ดฝั่งเรา
เปรียบง่ายๆ เหมือนนั่งรถกับคนบอกทาง Claude คือคนบอกทาง "เลี้ยวซ้าย จอดตรงนี้" ส่วนคนขับคือโค้ดของเรา เมื่อก่อนเราต้องสร้างทั้งคนขับและระบบสื่อสารระหว่างสองคนนี้เอง ตอนนี้ SDK ทำระบบสื่อสารให้แล้ว เหลือแค่หาคนขับ ซึ่งในเอกสารเรียกว่า driver
อ่านต้นทางได้ที่โพสต์ของ ClaudeDevs และเอกสาร Browser and computer use with the SDK toolsets

ก่อนกับหลัง ต่างกันยังไง
| เมื่อก่อน | ตอนนี้ | |
|---|---|---|
| วนรับคำสั่งจาก Claude แล้วส่งผลกลับ | เขียน loop เอง | SDK รันให้ (tool runner) |
| แปลงคำสั่งเป็นคลิกและคีย์ | เขียนเองทุกคำสั่ง | เขียนแค่ 1 method ต่อ 1 คำสั่ง เช่น navigate, left_click |
| ตรวจ URL ก่อนเปิด และถามคนก่อนทำ | เขียนเอง | ส่ง url_policy กับ confirm ให้ SDK เรียกให้ |
สร้างผลลัพธ์ส่งกลับ (tool_result) | ประกอบเอง | SDK สร้างให้ |
สิ่งที่ SDK ไม่ได้ให้มา เอกสารเขียนไว้ชัด: ไม่มีเบราว์เซอร์ ไม่มีเดสก์ท็อป ไม่มี driver สำเร็จรูป และไม่มี URL policy ทั้งสอง toolset ยังเป็น beta
ไม่อยากเขียน driver เอง ใช้ของใครได้บ้าง
มี 4 เจ้าที่ทำตัวเชื่อมกับ SDK toolsets ไว้แล้ว
ลิงก์เอกสารของแต่ละเจ้าอยู่ในหัวข้อ Partner integrations ของหน้าเอกสาร ถ้าจะเขียนเอง Anthropic มีตัวอย่าง driver ให้ดูใน repo claude-quickstarts

ลองรันตัวอย่างของ Anthropic
ใน repo มี 2 โฟลเดอร์ browser-toolset (สั่ง Chromium 1 แท็บ) กับ computer-toolset (สั่งเดสก์ท็อปผ่าน VNC) ตัวแรกลองง่ายกว่า เพราะใช้แค่ Chrome ที่มีในเครื่อง
สิ่งที่ต้องมี: Python 3.10 ขึ้นไป (หรือ Node.js 20 ขึ้นไป) และ Chrome หรือ Chromium
ขั้นที่ 1 — โหลดและติดตั้ง
git clone --depth 1 https://github.com/anthropics/claude-quickstarts
cd claude-quickstarts/browser-toolset/python
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
ขั้นที่ 2 — รันแบบยังไม่ใช้โมเดล (ไม่ต้องมี API key)
ไฟล์ exercise.py จะส่งคำสั่งแบบเดียวกับที่ Claude จะส่ง ไปยังหน้าเว็บทดสอบในเครื่อง ให้เราเห็นว่า driver ตอบอะไรกลับไป ไม่เสียเงิน
python exercise.py
บน Mac ถ้ามันหา Chrome ไม่เจอ ให้บอกที่อยู่ไปด้วย
CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" python exercise.py
ตอนเตรียมบทความนี้ลองรันบน Mac ด้วย Python 3.12 และ SDK anthropic 1.12.0 ผลที่ได้ (ตัดบรรทัด browser_state ออกให้อ่านง่าย)
navigate {"url": "http://localhost:56910/"} -> answered
"Navigated to http://localhost:56910/ — Exercise page"
read_page {} -> answered
- heading "Exercise page" [ref_1]
- button "Click me" [ref_2]
- link "About this page" [ref_3]
left_click {"target": {"type": "ref", "ref": "ref_2"}} -> answered
"Clicked."
get_page_text {} -> answered
"Exercise page The button was clicked. Click me About this page"
navigate {"url": "http://127.0.0.1:56910/"} -> refused
"blocked: http://127.0.0.1:56910/ is outside this exercise's page"
wait {"duration": 31} -> refused
"duration: must be between 0 and 30 seconds"
All calls came back as expected.
อธิบายสั้นๆ
read_pageคืนรายการของในหน้าพร้อมเลขอ้างอิง เช่น ปุ่ม "Click me" คือref_2left_clickสั่งคลิกด้วยเลขอ้างอิงนั้น แล้วget_page_textยืนยันว่าปุ่มถูกกดจริง- 2 คำสั่งท้ายถูกปฏิเสธ อันแรกเพราะ URL ไม่อยู่ในรายการที่อนุญาต อันที่สองเพราะสั่งรอเกิน 30 วินาที นี่คือด่านตรวจที่ SDK ทำให้ก่อนโค้ดเราจะทำงาน
ขั้นที่ 3 — ให้ Claude สั่งจริง
ขั้นนี้ต้องมี API key และเสียค่า API ตามที่ใช้
export ANTHROPIC_API_KEY="วาง API key ตรงนี้"
python run.py "Open example.com and tell me the heading"
ตั้งค่าเพิ่มได้ด้วยตัวแปรเหล่านี้
| ตัวแปร | ทำอะไร |
|---|---|
ALLOWED_DOMAINS | เว็บที่ยอมให้ Claude เปิด คั่นด้วยจุลภาค ค่าเริ่มต้นคือ example.com,iana.org |
HEADLESS | ตั้งเป็น 0 เพื่อดูเบราว์เซอร์ทำงาน |
MODEL | โมเดลที่จะใช้ เช่น claude-haiku-5-5 |
ขั้นที่ 3 ยังไม่ได้ลองรันในบทความนี้นะครับ คำสั่งมาจาก README ของ repo ตรงๆ
Anthropic บอกว่า Haiku 5.5 เหมาะกับงานแบบนี้เป็นพิเศษ เพราะเร็วและราคาถูก และใครใช้แพลน Max หรือ Team อยู่ เอาเครดิต API รายเดือนมาจ่ายค่าลองตรงนี้ได้

หน้าตาโค้ดเป็นยังไง
ย่อจากตัวอย่างในเอกสารให้เห็นโครง driver คือ class ที่สืบจากของ SDK แล้วเขียน method ทีละคำสั่ง backend ในตัวอย่างคือโค้ดของเราเองที่ครอบไลบรารีสั่งเบราว์เซอร์อย่าง Playwright
from anthropic import Anthropic
from anthropic.tools.browser import BetaAbstractBrowserToolset20260801
class MyBrowser(BetaAbstractBrowserToolset20260801):
def navigate(self, context, input):
... # สั่งเบราว์เซอร์ของเราเปิด input.url
def left_click(self, context, input):
... # สั่งคลิกตาม input.target
# ต้องมี _browser_state และ screenshot ด้วย ดูตัวเต็มในเอกสาร
client = Anthropic()
with MyBrowser(backend, url_policy=url_policy) as browser:
runner = client.beta.messages.tool_runner(
model="claude-opus-5-5",
max_tokens=1024,
tools=[browser],
messages=[{"role": "user", "content": "Open example.com and tell me the page heading."}],
)
for message in runner:
print(message)
อธิบายสั้นๆ
- โค้ดนี้เป็นโครงให้ดู ยังรันไม่ได้ ตัวเต็มที่รันได้อยู่ในหัวข้อ Quick start ของเอกสาร
tools=[browser]ส่ง driver ทั้งตัวเข้าไป คำสั่งไหนที่เราไม่ได้เขียน SDK จะบอก API ว่าปิดอยู่tool_runnerคือ loop ที่ SDK รันให้ เราแค่วนอ่านข้อความที่ออกมา
ข้อควรระวัง
เรื่องนี้สำคัญกว่าเครื่องมือทั่วไปครับ เพราะสิ่งที่ Claude ทำต่อขึ้นกับหน้าเว็บที่มันอ่าน หน้าเว็บที่มีข้อความแฝงอาจพยายามสั่งให้มันเข้าระบบภายใน ดึงไฟล์จากเครื่อง หรือกดอะไรที่มีผลจริง
เอกสารให้ทำ 6 ข้อนี้ก่อนรันกับอะไรก็ตามที่ไม่ใช่เบราว์เซอร์ทิ้งได้
- เขียน URL policy ที่ปฏิเสธทุก URL ที่งานไม่ต้องใช้ ถ้าไม่มี policy SDK จะไม่ตรวจ URL เลย
- ดัก request ใน driver แล้วตรวจด้วยกฎเดียวกัน เพราะ policy ตรวจแค่ URL ในคำสั่ง
navigateไม่เห็นลิงก์ที่คลิกหรือ redirect - ตั้งกฎขาออกของเครือข่ายที่ container
- จำกัดโฟลเดอร์อัปโหลดและดาวน์โหลด หรือปิดอัปโหลดไว้ (ค่าเริ่มต้นปิดอยู่)
- ให้คนกดยืนยันก่อนคำสั่งที่มีผลจริง ด้วย
confirm - แยกเบราว์เซอร์ไว้ใน container หรือ VM ของแต่ละรอบ
และอีก 3 เรื่อง
- อย่าใช้เบราว์เซอร์ที่ล็อกอินบัญชีจริง ใช้โปรไฟล์เปล่าที่ไม่มีบัญชีไหนที่เราไม่ยอมให้ Claude แตะ
- ตัวอย่างใน repo ไม่ใช่โค้ดสำหรับใช้งานจริง README เขียนไว้เองว่า "It is not production code"
- ยังเป็น beta ชื่อ class และวิธีเรียกอาจเปลี่ยนได้

สิ่งที่ได้
- ทำ agent ที่ใช้เบราว์เซอร์หรือหน้าจอได้ง่ายขึ้น เพราะ SDK รัน loop ตรวจ policy และสร้างผลลัพธ์ให้
- เรายังต้องมี driver เขียนเองหรือใช้ของ Browser Use, Browserbase, E2B, Daytona
- เริ่มลองได้โดยไม่เสียเงินด้วย
python exercise.pyแล้วค่อยต่อ API key
ถ้าอยากเริ่มใช้ Claude Code ทำงานจริงแบบเป็นขั้นตอน ดูได้ที่ คอร์สทั้งหมด ครับ
ลิงก์
- โพสต์ของ ClaudeDevs
- Browser and computer use with the SDK toolsets (Claude Platform Docs)
- Quickstart บน GitHub: browser-toolset · computer-toolset
- Claude Haiku 5.5 (Anthropic)