← กลับไปหน้าบทความ
ขั้นสูง (MarTech)

Browser Agent บน Cloudflare ทำได้ตั้งแต่เปิดหน้าเว็บอัตโนมัติ ไปจนถึงจับภาพหน้าจอไว้ Debug จริง

ทีมบรรณาธิการ linli12 ส.ค. 04:52อัปเดต 12 ส.ค. 04:52อ่าน 2 นาที
Browser Agent บน Cloudflare ทำได้ตั้งแต่เปิดหน้าเว็บอัตโนมัติ ไปจนถึงจับภาพหน้าจอไว้ Debug จริง
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

การสร้าง Browser Agent บน Cloudflare คือการผูก Browser Rendering เข้ากับ Agent ที่มีสถานะจดจำได้ ให้ Agent เปิดหน้าเว็บเป้าหมาย จับภาพหน้าจอเก็บไว้เป็นหลักฐาน อ่านค่าที่ปรากฏบนหน้าจอ แล้วตัดสินใจขั้นตอนถัดไปเอง เช่นแจ้งเตือนเมื่อพบข้อผิดพลาด หรือลองซ้ำเมื่อหน้าเว็บโหลดไม่สำเร็จ เหมาะกับงาน Debug และเฝ้าระวังหน้าเว็บที่ต้องทำซ้ำบ่อย

รู้ว่า Browser Rendering เปิดเบราว์เซอร์จริงให้สั่งควบคุมได้เป็นจุดเริ่มต้น แต่การเอาไปประกอบเป็น Agent ที่ทำงานได้ครบวงจร ตั้งแต่เปิดหน้าเว็บ ตัดสินใจว่าจะคลิกตรงไหนต่อ ไปจนถึงสรุปว่าเจอปัญหาอะไรบนหน้านั้น เป็นอีกขั้นที่ต้องออกแบบเพิ่มเติม

ทีมพัฒนาหลายทีมเจอสถานการณ์คล้ายกัน คือมีหน้าเว็บสำคัญที่ต้องตรวจสอบซ้ำ ๆ ทุกวัน เช่นหน้าชำระเงินหรือหน้าล็อกอิน แต่ไม่มีเวลาให้คนนั่งเปิดดูเองทุกครั้ง การสร้าง Agent ที่ทำหน้าที่นี้แทนได้ ช่วยลดภาระและจับปัญหาได้เร็วกว่าที่คนมาสังเกตเห็นเอง

บทความนี้จะไล่ทีละขั้นว่าประกอบ Browser Agent ยังไงให้เปิดหน้าเว็บ จับภาพหน้าจอ อ่านสิ่งที่ปรากฏ และรายงานปัญหาที่พบได้เองอย่างเป็นระบบ พร้อมข้อผิดพลาดที่ทีมมักเจอตอนเริ่มทำจริง

อะไรที่ทำให้เป็น Agent ไม่ใช่แค่สคริปต์เปิดเว็บธรรมดา

สคริปต์เปิดเว็บทั่วไปทำตามคำสั่งตายตัวที่เขียนไว้ล่วงหน้าทุกขั้นตอน เช่นเปิดหน้านี้ กดปุ่มนี้ อ่านค่าตรงนี้ จบ แต่ Browser Agent ต่างออกไปตรงที่มันมีชั้นตัดสินใจอยู่เหนือขั้นตอนพื้นฐานนั้น เช่นถ้าหน้าเว็บโหลดช้ากว่าปกติ Agent ตัดสินใจรอเพิ่มหรือลองใหม่เองได้ หรือถ้าพบข้อความแจ้งเตือนที่ไม่คาดคิดบนหน้าจอ Agent สรุปได้เองว่าควรรายงานเป็นปัญหา

ความสามารถในการจดจำสถานะข้ามหลายขั้นตอนก็เป็นอีกจุดที่แยก Agent ออกจากสคริปต์ธรรมดา เช่น Agent ที่ทำงานหลายหน้าเว็บต่อเนื่องกันต้องจำได้ว่าหน้าไหนตรวจแล้ว หน้าไหนยังไม่ได้ตรวจ และเจอปัญหาอะไรไปแล้วบ้าง ซึ่งเป็นความสามารถที่ Cloudflare Agents ออกแบบมาให้รองรับโดยตรง

การผูก Browser Rendering เข้ากับชั้น Agent นี้จึงทำให้ได้ระบบที่ไม่ใช่แค่ทำตามสคริปต์ตายตัว แต่ปรับพฤติกรรมตามสิ่งที่เจอจริงบนหน้าเว็บได้ ซึ่งเหมาะกับงานที่หน้าเว็บเป้าหมายเปลี่ยนแปลงได้บ่อยหรือมีความไม่แน่นอนสูง

ส่วนประกอบหลักที่ต้องมีก่อนเริ่มประกอบ Agent

  • Browser Rendering Binding — ส่วนที่เปิดเบราว์เซอร์จริงให้โค้ดสั่งควบคุมได้ ทำหน้าที่เหมือนมือและตาของ Agent บนหน้าเว็บ
  • ชั้นเก็บสถานะ — เพื่อจดจำว่า Agent ตรวจหน้าไหนไปแล้ว เจออะไรมาบ้าง และควรทำอะไรต่อในรอบถัดไป
  • โมเดลภาษาสำหรับตัดสินใจ — ใช้แปลความหมายของสิ่งที่พบบนหน้าจอ เช่นข้อความแจ้งเตือนหรือโครงหน้าที่เปลี่ยนไป แล้วตัดสินใจขั้นตอนถัดไป
  • ช่องทางแจ้งเตือนปลายทาง — เพื่อส่งรายงานเมื่อ Agent พบปัญหา ไม่ว่าจะเป็นข้อความแจ้งเตือนในระบบภายในหรือช่องทางอื่นที่ทีมใช้ติดตามงาน

ขั้นตอนประกอบ Browser Agent ตัวแรกให้เปิดเว็บและจับภาพหน้าจอ

  1. กำหนดรายการหน้าเว็บที่ต้องการให้ Agent ตรวจสอบ พร้อมระบุว่าแต่ละหน้าควรมีองค์ประกอบอะไรปรากฏอยู่ถ้าทำงานปกติ
  2. เขียนโค้ดให้ Agent สั่ง Browser Rendering เปิดหน้าเว็บทีละหน้าตามรายการ แล้วรอให้หน้าโหลดจนสมบูรณ์ก่อนดำเนินการต่อ
  3. จับภาพหน้าจอทุกครั้งที่เปิดหน้าเว็บ เก็บไว้เป็นหลักฐานอ้างอิงว่าหน้านั้นแสดงผลอย่างไรในเวลานั้น ไม่ใช่แค่บันทึกว่าตรวจแล้วเฉย ๆ
  4. อ่านข้อความหรือองค์ประกอบสำคัญที่ปรากฏบนหน้า เทียบกับสิ่งที่ควรปรากฏถ้าทำงานปกติ แล้วให้โมเดลภาษาช่วยสรุปว่าพบความผิดปกติหรือไม่
  5. ถ้าพบความผิดปกติ ให้ Agent สร้างรายงานที่มีทั้งภาพหน้าจอและคำอธิบายสิ่งที่พบ แล้วส่งแจ้งเตือนไปยังช่องทางที่ทีมกำหนดไว้

ใช้ภาพหน้าจอที่ Agent เก็บมา Debug ปัญหาได้เร็วกว่าเดา

เวลาเว็บเกิดปัญหาแล้วมีคนแจ้งเข้ามาทีหลัง สิ่งที่ทีมพัฒนามักเจอคือไม่รู้ว่าตอนที่ปัญหาเกิดขึ้นจริงหน้าเว็บแสดงอะไรอยู่ เพราะพอเปิดดูตอนหลังปัญหาอาจหายไปแล้วหรือเกิดขึ้นเฉพาะบางเงื่อนไข การมี Agent เก็บภาพหน้าจอไว้ทุกครั้งที่ตรวจสอบ ช่วยให้มีหลักฐานย้อนดูได้ว่าหน้าตาจริงตอนเกิดปัญหาเป็นแบบไหน

ภาพหน้าจอที่เก็บไว้เป็นชุดตามเวลา ยังช่วยให้เห็นแนวโน้มได้ด้วย เช่นถ้าปัญหาเริ่มปรากฏตั้งแต่ช่วงเวลาหนึ่งเป็นต้นมา การไล่ดูภาพย้อนหลังช่วยระบุได้ว่าปัญหาเริ่มตั้งแต่เมื่อไร ซึ่งมักตรงกับช่วงที่มีการอัปเดตโค้ดหรือเปลี่ยนแปลงระบบฝั่งใดฝั่งหนึ่ง ทำให้ทีมสืบสาเหตุได้ตรงจุดกว่าการเดาจากคำอธิบายปากเปล่าของผู้ใช้

ข้อควรระวังคือภาพหน้าจอเพียงอย่างเดียวไม่ได้บอกทุกอย่าง เช่นปัญหาที่เกิดจากการตอบสนองช้าของเซิร์ฟเวอร์หรือข้อผิดพลาดที่ไม่ปรากฏบนหน้าจอโดยตรง ทีมควรเก็บข้อมูลประกอบอื่นด้วย เช่นเวลาที่ใช้โหลดหน้าและข้อความบันทึกจากฝั่งเซิร์ฟเวอร์ ไม่ใช่พึ่งภาพหน้าจอเป็นแหล่งข้อมูลเดียว

เทียบชัด ๆ: คนตรวจเว็บเองด้วยมือ กับให้ Browser Agent ตรวจแทน

ประเด็นตรวจด้วยมือBrowser Agent
ความถี่ในการตรวจสอบจำกัดตามเวลาที่คนมีอยู่ตั้งให้ตรวจซ้ำได้บ่อยตามต้องการโดยไม่มีคนเปิดเอง
หลักฐานตอนพบปัญหาขึ้นอยู่กับว่าคนจดจำและบันทึกไว้แค่ไหนมีภาพหน้าจอและบันทึกเวลาที่แน่นอนทุกครั้ง
การตรวจหลายหน้าพร้อมกันทำได้ทีละหน้า ใช้เวลาตามจำนวนหน้าตรวจได้หลายหน้าต่อเนื่องตามที่ตั้งค่าไว้
ความเข้าใจบริบทที่ซับซ้อนเกินคาดคนตัดสินใจได้ยืดหยุ่นกว่าเมื่อเจอสถานการณ์แปลกใหม่ตัดสินใจได้ในกรอบที่ออกแบบไว้ อาจพลาดกรณีนอกกรอบที่ไม่เคยคิดถึง

ตัวอย่างจริง: เฝ้าระวังหน้าชำระเงินที่พังตอนตีสองแล้วไม่มีใครรู้

ทีมอีคอมเมิร์ซขนาดกลางทีมหนึ่งเจอปัญหาที่หน้าชำระเงินใช้งานไม่ได้อยู่หลายชั่วโมงตอนกลางดึก เพราะการอัปเดตระบบฝั่งผู้ให้บริการชำระเงินทำให้ปุ่มยืนยันการชำระเงินไม่ตอบสนอง แต่กว่าจะมีคนสังเกตเห็นก็ผ่านไปเกือบครึ่งวัน เพราะไม่มีใครเข้าเว็บช่วงเวลานั้น และระบบ Monitoring แบบเดิมตรวจแค่ว่าเซิร์ฟเวอร์ตอบสนองหรือไม่ ไม่ได้ตรวจว่าปุ่มบนหน้าเว็บกดได้จริงหรือเปล่า

หลังเหตุการณ์นั้น ทีมตั้ง Browser Agent ให้เปิดหน้าชำระเงินทุกช่วงเวลาที่กำหนด จำลองการกรอกข้อมูลทดสอบและกดปุ่มยืนยัน แล้วจับภาพหน้าจอผลลัพธ์ไว้ทุกครั้ง ถ้าปุ่มไม่ตอบสนองหรือหน้าแสดงข้อความผิดพลาดที่ไม่คาดคิด Agent จะส่งแจ้งเตือนทันทีพร้อมภาพหน้าจอประกอบ แทนที่จะรอให้ลูกค้าร้องเรียนเข้ามาเอง

สิ่งที่ทีมนี้เรียนรู้คือการตรวจสอบแบบเดิมที่ดูแค่ว่าเซิร์ฟเวอร์ตอบสนองไม่พอสำหรับหน้าที่พึ่งพาการทำงานร่วมกับผู้ให้บริการภายนอก เพราะเซิร์ฟเวอร์อาจตอบสนองปกติทุกอย่าง แต่ฟังก์ชันสำคัญบนหน้าเว็บกลับใช้งานไม่ได้จริงเพราะปัญหาที่ฝั่งอื่น การมี Agent ที่จำลองพฤติกรรมผู้ใช้จริงจึงจับปัญหาประเภทนี้ได้ในแบบที่ Monitoring ทั่วไปมองไม่เห็น

กรณีไหนที่ยังไม่ควรปล่อยให้ Agent ตรวจแทนคนทั้งหมด

หน้าเว็บที่มีการเปลี่ยนแปลงโครงสร้างบ่อยมากจนกฎที่ Agent ใช้ตัดสินใจตามไม่ทัน อาจทำให้ Agent รายงานผิดพลาดบ่อยกว่าที่ควร ในกรณีนี้ต้องคอยปรับกฎการตรวจสอบให้ทันการเปลี่ยนแปลง ไม่ใช่ปล่อยให้ Agent ทำงานตามกฎเดิมโดยไม่มีคนคอยทบทวน

งานที่ต้องใช้วิจารณญาณสูง เช่นตัดสินใจว่าเนื้อหาบนหน้าเว็บเหมาะสมหรือไม่ตามบริบททางธุรกิจที่ซับซ้อน ยังเป็นจุดที่ควรมีคนตรวจสอบร่วมด้วย ไม่ควรปล่อยให้ Agent ตัดสินใจเด็ดขาดคนเดียวโดยไม่มีขั้นตอนให้คนทบทวนผลก่อนดำเนินการที่กระทบต่อผู้ใช้จริง

แนวทางที่สมดุลกว่าคือให้ Agent ทำหน้าที่ตรวจสอบและแจ้งเตือนก่อน ส่วนการตัดสินใจแก้ไขจริงยังให้คนเป็นผู้ยืนยันขั้นสุดท้าย โดยเฉพาะช่วงแรกที่ยังไม่มั่นใจว่ากฎที่ตั้งไว้ครอบคลุมสถานการณ์จริงได้ครบแค่ไหน

ข้อผิดพลาดที่ทำให้ Browser Agent รายงานผิดบ่อยเกินไป

  • ตั้งเงื่อนไขตรวจสอบแบบตายตัวเกินไป — เช่นอ้างอิงตำแหน่งองค์ประกอบเป๊ะ ๆ พอหน้าเว็บปรับดีไซน์เล็กน้อย Agent ก็รายงานผิดพลาดทั้งที่หน้าเว็บทำงานปกติ
  • ไม่เผื่อเวลารอโหลดหน้าที่ช้ากว่าปกติบางครั้ง — ทำให้ Agent สรุปว่าหน้าเว็บพังทั้งที่จริงแค่โหลดช้ากว่าปกติในบางช่วงเวลา
  • ไม่เก็บบริบทเพิ่มเติมนอกจากภาพหน้าจอ — ทำให้ทีมที่มาดูรายงานทีหลังไม่รู้ว่าเกิดอะไรขึ้นก่อนหน้านั้น ต้องเสียเวลาสืบสาเหตุเพิ่มเอง
  • ปล่อยให้ Agent แจ้งเตือนถี่เกินไปจนคนเริ่มเพิกเฉย — ถ้าตั้งเงื่อนไขไวเกินไปจนแจ้งเตือนบ่อยเกินจำเป็น ทีมจะเริ่มไม่สนใจการแจ้งเตือน ทำให้พลาดกรณีที่เป็นปัญหาจริง

สรุป

การสร้าง Browser Agent คือการเอา Browser Rendering มาผูกกับชั้นตัดสินใจและชั้นเก็บสถานะ ให้เปิดหน้าเว็บ จับภาพหน้าจอ อ่านสิ่งที่ปรากฏ และตัดสินใจขั้นตอนถัดไปได้เอง แทนที่จะทำตามสคริปต์ตายตัวที่ต้องแก้ทุกครั้งที่หน้าเว็บเปลี่ยน

จุดที่ทำให้ Agent มีคุณค่าจริงคือหลักฐานที่เก็บไว้อย่างเป็นระบบ ทั้งภาพหน้าจอและบริบทประกอบ ช่วยให้ทีมสืบสาเหตุปัญหาได้เร็วกว่าการรอให้คนแจ้งเข้ามาแล้วค่อยเดาว่าเกิดอะไรขึ้น แต่ก็ยังต้องมีคนคอยทบทวนผลในจุดที่ต้องใช้วิจารณญาณสูง

  • Browser Agent คือ Browser Rendering ที่ผูกกับชั้นตัดสินใจและชั้นเก็บสถานะให้ทำงานหลายขั้นตอนต่อเนื่องได้เอง
  • ภาพหน้าจอที่เก็บไว้อย่างเป็นระบบช่วย Debug ปัญหาได้เร็วกว่าการเดาจากคำอธิบายปากเปล่า
  • ยังต้องมีคนทบทวนผลในงานที่ต้องใช้วิจารณญาณสูงหรือหน้าเว็บที่เปลี่ยนโครงสร้างบ่อยเกินไป
  • ควบคุมความถี่การตรวจสอบและค่าใช้จ่ายฝั่งโมเดลภาษาให้เหมาะกับความสำคัญของแต่ละหน้า

คำถามที่พบบ่อย

ต้องเขียนโค้ดเยอะแค่ไหนถึงจะสร้าง Browser Agent ตัวแรกได้

ขึ้นอยู่กับความซับซ้อนของงาน ถ้าแค่เปิดหน้าเว็บและจับภาพหน้าจอเทียบกับก่อนหน้า โค้ดเริ่มต้นไม่ซับซ้อนมาก แต่ถ้าต้องการให้ตัดสินใจตามบริบทที่ซับซ้อนขึ้น เช่นแยกแยะข้อความแจ้งเตือนหลายแบบ จะต้องเขียนส่วนตัดสินใจเพิ่มเติมและทดสอบให้ครอบคลุม

Browser Agent ต่างจากการใช้ Browser Rendering ตรง ๆ ยังไง

Browser Rendering เป็นเครื่องมือควบคุมเบราว์เซอร์ระดับล่าง ส่วน Browser Agent คือการนำเครื่องมือนั้นมาผูกกับชั้นตัดสินใจและชั้นเก็บสถานะ ทำให้ทำงานหลายขั้นตอนต่อเนื่องและปรับพฤติกรรมตามสิ่งที่พบได้เอง อ่านเพิ่มเรื่องพื้นฐานได้ที่ <a href="/blog/cloudflare-browser-run">Browser Rendering คืออะไร</a>

ใช้ Agents SDK ช่วยสร้าง Browser Agent ได้ไหม

ได้ <a href="/blog/cloudflare-agents-sdk">Agents SDK</a> มีโครงสร้างจัดการสถานะและ Tool ให้พร้อมใช้ ทำให้ไม่ต้องเขียนระบบจดจำสถานะเองตั้งแต่ต้น ช่วยลดงานส่วนโครงสร้างพื้นฐานและให้ทีมโฟกัสกับตรรกะการตรวจสอบเฉพาะของตัวเองได้มากกว่า

เก็บภาพหน้าจอไว้นานแค่ไหนถึงจะพอสำหรับ Debug

ขึ้นอยู่กับรอบการตรวจสอบและพื้นที่จัดเก็บที่ทีมมี ทีมส่วนใหญ่เก็บอย่างน้อยพอให้ย้อนดูได้ถึงช่วงที่มีการอัปเดตระบบครั้งล่าสุด เพื่อเทียบว่าปัญหาเริ่มตั้งแต่ตอนไหน ควรตั้งนโยบายลบภาพเก่าที่ไม่จำเป็นออกเป็นระยะเพื่อไม่ให้พื้นที่จัดเก็บเต็ม

ควบคุมค่าใช้จ่ายของ Browser Agent ที่ตรวจสอบบ่อย ๆ ได้ยังไง

ควรกำหนดความถี่การตรวจสอบให้เหมาะกับความสำคัญของแต่ละหน้า หน้าที่สำคัญมากตรวจถี่กว่า หน้าที่ความเสี่ยงต่ำตรวจห่างกว่า และพิจารณาใช้ <a href="/blog/cloudflare-ai-gateway-spend-limits">Spend Limits</a> ควบคุมค่าใช้จ่ายฝั่งโมเดลภาษาที่ Agent เรียกใช้ประกอบการตัดสินใจ

Browser Agent แทนทีมทดสอบซอฟต์แวร์ได้เลยไหม

ไม่ควรมองเป็นตัวแทนทั้งหมด เพราะงานทดสอบบางส่วนต้องใช้วิจารณญาณของคนที่เข้าใจบริบทธุรกิจ Browser Agent เหมาะกับการตรวจสอบซ้ำ ๆ ที่มีรูปแบบชัดเจนมากกว่า ส่วนการวางแผนทดสอบเชิงลึกยังควรให้ทีมทดสอบที่มีประสบการณ์เป็นผู้ออกแบบร่วมด้วย

วัด Conversion LINE ทุกแบรนด์ รวมศูนย์ที่เดียว

องค์กรที่มีหลายแบรนด์ หลายสาขา หลาย LINE OA — linli รวม Tracking และส่ง Conversion กลับทุกแพลตฟอร์ม พร้อม Custom Limit เริ่มฟรี 14 วัน

ติดต่อทีม Sales

บทความที่เกี่ยวข้อง

ข้อมูล embedding โตจนค้นช้าใน pgvector จะย้ายไป Vectorize ดีไหม

ข้อมูล embedding โตจนค้นช้าใน pgvector จะย้ายไป Vectorize ดีไหม

ทีมที่เริ่มด้วย pgvector บน Supabase มักมาถึงจุดที่ query ช้าลงเมื่อข้อมูลโตขึ้น บทความนี้เทียบสถาปัตยกรรม ประสิทธิภาพ และเส้นทางย้ายไป Vectorize อย่างละเอียดก่อนตัดสินใจ
ทำ RAG Pipeline เองทั้งระบบ กับปล่อยให้ AI Search จัดการให้ ต่างกันตรงไหน

ทำ RAG Pipeline เองทั้งระบบ กับปล่อยให้ AI Search จัดการให้ ต่างกันตรงไหน

การสร้างระบบค้นหาที่โมเดล AI ใช้อ้างอิงคำตอบจากเอกสารของตัวเองต้องผ่านหลายขั้นตอนที่ทำเองแล้วซับซ้อนกว่าที่คิด Cloudflare AI Search ห่อขั้นตอนเหล่านั้นไว้ให้เรียกใช้เป็นบริการเดียว แต่ก็ต้องแลกกับความยืดหยุ่นบางส่วน
แอปมีผู้ใช้หลักพันต่อวัน จะเลือก D1 หรือ Postgres ดี

แอปมีผู้ใช้หลักพันต่อวัน จะเลือก D1 หรือ Postgres ดี

D1 คือฐานข้อมูล SQL แบบ serverless ที่ผูกกับ Workers โดยตรง บทความนี้อธิบายว่า SQLite เบื้องหลังทำงานยังไง เหมาะกับแอปขนาดไหน และข้อจำกัดที่ต้องรู้ก่อนย้ายจาก Postgres