📅
🕵️‍♂️ อ่าน ~3 นาที

คดีที่ 09: ผ่าระบบ Browser-Use Agent: สั่ง AI ท่องเว็บ กรอกฟอร์ม และสกัดข้อมูลอัตโนมัติ 24/7


🕵️‍♂️ ปมคดีและที่มา: ทำไม Web Scraping แบบเดิมถึงตายในยุคนี้?

เป็นเวลาหลายสิบปีที่นักพัฒนาแก้ปัญหาการดึงข้อมูลจากอินเทอร์เน็ตด้วย Regex, BeautifulSoup, หรือ Puppeteer Script ที่ต้องเขียน Selector (div > span.price) แบบเจาะจงทีละจุด

แต่ฝันร้ายของวิศวกรระบบคือ:

  1. หน้าเว็บเปลี่ยน UI นิดเดียว สคริปต์พังทันที: คลาสชื่อ CSS โดนสับเปลี่ยน (Obfuscation) ในการ Deploy รอบถัดไป
  2. ข้อมูลซ่อนหลัง Dynamic JavaScript / SPA: แค่ curl หรือยิง HTTP Request ธรรมดาไม่สามารถเรนเดอร์ข้อมูลจริงได้
  3. ต้องมีปฏิสัมพันธ์ที่ซับซ้อน (Multi-Step User Journey): ล็อกอิน, เลือกตัวเลือกในดรอปดาวน์, เลื่อนดูผลลัพธ์แบบ Infinite Scroll, และแก้ฟอร์มที่ซ้อนกันหลายชั้น

นี่คือเหตุผลที่โปรเจกต์อย่าง browser-use และ Web Agentic Architectures กวาด Star บน GitHub ไปมากกว่า 110,000+ ดวง ภายในเวลาอันรวดเร็ว เพราะมันเปลี่ยนแนวคิดจากการเขียนโค้ดล็อกตำแหน่ง มาเป็นการให้ AI สวมบทบาทผู้ใช้คอมพิวเตอร์จริง (Computer-Using Agent) ผ่านเบราว์เซอร์


🔍 ผ่าสถาปัตยกรรมระบบ Browser Agent (System Architecture)

หัวใจสำคัญที่ทำให้ Browser Agent แตกต่างจากบอทธรรมดา คือการทำงานเป็นวงจร Vision-Action Perception Loop ร่วมกับ DOM Tree Coordinate Mapping:

graph TD
    UserQuery["คำสั่งจากผู้ใช้<br/>(เช่น 'ไปจองตั๋ว' หรือ 'หาดีลคอนโด')"] --> AgentPlanner["Agent Planning Unit<br/>(LLM / Vision Model)"]
    
    subgraph Browser Execution Loop
        AgentPlanner --> BrowserEngine["Playwright / Chromium Engine"]
        BrowserEngine --> DOMState["สกัดสถานะหน้าเว็บ<br/>(DOM Snapshot + Cleaned Tree)"]
        BrowserEngine --> ViewportCapture["แคปเจอร์ภาพหน้าจอ<br/>(Visual Viewport)"]
        DOMState --> CoordinateMapper["Coordinate & Element ID Mapper<br/>(ติดป้ายหมายเลขทุก Element ที่คลิกได้)"]
        ViewportCapture --> CoordinateMapper
        CoordinateMapper --> Reasoner["Action Reasoner<br/>(วิเคราะห์ Element และตัดสินใจคลิก/พิมพ์)"]
        Reasoner --> ActionDispatcher["Action Dispatcher<br/>(Click, Type, Scroll, Wait)"]
        ActionDispatcher --> BrowserEngine
    end

    Reasoner -- "งานสำเร็จตามเงื่อนไข" --> Result["สกัด JSON สรุปผลลัพธ์ส่งมอบ"]

3 กลไกสำคัญที่ทำให้บอทไม่หลงทาง:

  1. Interactive Element Tagging: ระบบจะรันสคริปต์ JavaScript แปะกรอบและตัวเลขไฮไลต์ ([1], [2], [3]) บนทุกปุ่มหรือช่องกรอกข้อมูล ทำให้โมเดล Vision ชี้เป้าได้แม่นยำ 100% ว่าจะคลิกตรงไหน
  2. DOM Noise Reduction: ตัดแท็กที่ไม่เกี่ยวข้อง เช่น CSS/SVG ยุบเหลือเฉพาะ Semantic Nodes และ ARIA labels เพื่อประหยัด Token สูงสุด 80%
  3. Self-Correction & Fallback: ถ้าคลิกแล้วหน้าไม่โหลด หรือติด Modal Pop-up บอทจะวิเคราะห์ภาพล่าสุดแล้วกดปิดก่อนเดินหน้าต่อ

💻 โค้ดตัวอย่างการนำไปใช้จริง (Production Implementation)

นี่คือโครงสร้างโค้ดแบบกระชับที่ใช้งานจริงบนโปรดักชัน ด้วยไลบรารี browser-use:

from browser_use import Agent, Controller
from langchain_anthropic import ChatAnthropic
import asyncio

async def run_market_intelligence_agent(target_product: str):
    """
    Autonomous Agent สำหรับส่องราคาคู่แข่งและสกัดข้อมูลอัตโนมัติ
    """
    llm = ChatAnthropic(model="claude-3-5-sonnet-20241022", temperature=0)
    controller = Controller()
    
    task_prompt = f"""
    1. เข้าไปที่เว็บ E-Commerce เป้าหมาย
    2. ค้นหาสินค้า '{target_product}'
    3. กรองเฉพาะร้านที่มีคะแนนรีวิวมากกว่า 4.5 ดาว
    4. สกัด 3 อันดับแรกที่มีราคาคุ้มค่าที่สุดออกมาเป็น JSON
       รูปแบบ: [{{"title": "...", "price": "...", "store": "..."}}]
    """
    
    agent = Agent(
        task=task_prompt,
        llm=llm,
        controller=controller,
        use_vision=True,               # เปิดใช้ Vision Model ดูภาพหน้าจอจริง
        save_conversation_path="logs/browser_agent.json"
    )
    
    history = await agent.run(max_steps=15)
    print("✅ สกัดข้อมูลสำเร็จ:")
    print(history.final_result())

if __name__ == "__main__":
    asyncio.run(run_market_intelligence_agent("Mechanical Keyboard Wireless"))

⚠️ ข้อควรระวังระดับวิศวกรรม (Production Guardrails)

  1. Human-in-the-Loop สำหรับขั้นตอนสำคัญ: ห้ามปล่อยให้บอทกดปุ่มชำระเงิน (Confirm Payment) หรือยืนยันการทำธุรกรรมโดยเด็ดขาด ให้บอทกรอกฟอร์มค้างไว้แล้วแจ้งเตือนทาง Discord/Telegram ให้มนุษย์กดอนุมัติ
  2. Session Cookie Isolation: แยกโปรไฟล์ Browser Context และสุ่ม User-Agent เสมอ ป้องกันการโดนแบนทั้ง IP
  3. Max Steps & Token Ceiling: กำหนดเพดาน max_steps ชัดเจน (เช่น ไม่เกิน 15-20 ก้าว) เพื่อไม่ให้บอทวนลูปกินค่า API ฟรีหากเจอเว็บที่ออกแบบสับสน

💰 3 โมเดลต่อยอดสร้างเงินจริงจาก Browser Agent

โมเดลบริการ รายละเอียดงาน มูลค่าในตลาดจริง
1. B2B Automated Lead Generation บอทเข้าส่องข้อมูลบริษัท, รายชื่อผู้บริหาร และอีเมลธุรกิจจากไดเรกทอรีเฉพาะทาง นำมาคัดกรองแล้วยัดลง CRM $1,500 - $4,000 / โปรเจกต์
2. Dynamic Competitor Price Monitor บอทส่องราคาคู่แข่งทุกชั่วโมง แจ้งเตือนเมื่อมีการตัดราคา พร้อมคำนวณ Margin แนะนำการตั้งราคา $199 - $599 / เดือน (MRR)
3. Automated Regulatory Filing บอทช่วยยื่นเอกสาร/ขอใบอนุญาตในพอร์ทัลราชการที่ไม่มี API ให้ใช้งาน ช่วยประหยัดเวลาแอดมินองค์กร High-Ticket Retainer

📥 ดาวน์โหลด Browser Agent Starter Kit ฟรี:
รับโค้ดแม่แบบพร้อมรันและสถาปัตยกรรมฉบับเต็มได้ที่หน้า Starter Kit

🕵️‍♂️

ชอบคดีนี้ไหม? ส่งต่อให้เพื่อนในวงการ Dev!

แชร์บทความวิเคราะห์สถาปัตยกรรม AI & โค้ดจริงที่นำไปใช้สร้างเงินได้ทันที

💬

ร่วมอภิปรายคดีลับ (Case Discussion)

มีข้อสงสัย บัค หรือไอเดียต่อยอดสถาปัตยกรรมนี้? แลกเปลี่ยนกับเพื่อนสาย Dev ได้ด้านล่าง: