การตรวจจับบอตของ TRACIO ระบุเบราว์เซอร์อัตโนมัติ เครื่องมือแบบ headless และการโจมตี ด้วยสคริปต์ ผ่านสถาปัตยกรรมสองชั้น คือการเก็บข้อมูลฝั่งไคลเอนต์ในเบราว์เซอร์เอเจนต์ และการวิเคราะห์ฝั่งเซิร์ฟเวอร์ ครอบคลุมเฟรมเวิร์กอัตโนมัติกระแสหลัก เบราว์เซอร์ headless เอเจนต์ท่องเว็บ AI และ anti-detect browser ด้วยอัตราผลบวกลวงที่ ใกล้ศูนย์ พร้อมทั้งใส่ครอว์เลอร์ของเครื่องมือค้นหาที่ถูกต้องตามกฎหมายไว้ใน allowlist โดยอัตโนมัติ
เบราว์เซอร์เอเจนต์จะรันชุดการตรวจสอบที่กว้างและรายงานผลลัพธ์ ฝั่งเซิร์ฟเวอร์จะถ่วง
น้ำหนักผลลัพธ์เหล่านั้นให้กลายเป็นคะแนนบอต และคะแนนจะถูกจับคู่กับคำตัดสิน ตัวบ่งชี้
ที่ชัดเจนจำนวนไม่มากมีน้ำหนักชี้ขาดได้ด้วยตัวเอง และบังคับให้ได้คำตัดสิน bot
ไม่ว่าผลลัพธ์อื่นจะเป็นอย่างไร
ไม่มีการเปิดเผยว่าการตรวจสอบใดถูกรัน ถ่วงน้ำหนักอย่างไร และเกณฑ์อยู่ตรงไหน — ไม่ว่าจะเป็นแพ็กเกจใดก็ตาม การเขียนสิ่งเหล่านี้ไว้ในเอกสารเท่ากับบอกผู้ปฏิบัติการ บอตอย่างแม่นยำว่าต้องเปลี่ยนอะไรจึงจะผ่านการป้องกันไปได้ สิ่งที่คุณได้รับแทนคือ คำตัดสิน ป้ายกำกับประเภทบอต และในแพ็กเกจ Business ขึ้นไปคือ รหัสเหตุผล ที่ระบุประเภทของการสังเกตที่อยู่เบื้องหลัง การตัดสินใจนั้น
การระบุตัวตนทุกครั้งจะมาพร้อมคำตัดสินเรื่องบอต โดยจะส่งถึงคุณในชื่อ bot.result ใน
เพย์โหลด webhook และในชื่อ result.bot ใน SDK ฝั่งไคลเอนต์
| ผลลัพธ์ | คำอธิบาย |
|---|---|
human | ไม่พบตัวบ่งชี้ของระบบอัตโนมัติ ครอว์เลอร์ของเครื่องมือค้นหาที่ผ่านการยืนยันก็ได้ human เช่นกัน |
bot | ตรวจพบการเข้าถึงแบบอัตโนมัติหรือด้วยสคริปต์ โดยมีป้ายกำกับ bot.type มาด้วย |
uncertain | สัญญาณปะปนหรืออ่อน — ไม่ชัดว่าเป็นมนุษย์ และไม่ชัดว่าเป็นระบบอัตโนมัติ |
ค่านี้จับคู่กับฟิลด์เชิงธุรกิจ decision.action (real, fake หรือ suspicious)
ที่ใช้ทั่วทั้งแดชบอร์ดและเพย์โหลด webhook
bot.score จะมาพร้อมคำตัดสิน ในเพย์โหลด webhook เวอร์ชัน 2 ค่านี้เป็นทศนิยมช่วง
0..100 — ตัวเลขเดียวกับที่แดชบอร์ดแสดงสำหรับการเข้าชมนั้น (ในสคีมาเวอร์ชัน 1 ที่ถูก
ตรึงไว้ ค่านี้เป็นเศษส่วน 0..1 ดู Webhooks)
bot.type จะปรากฏเมื่อผลลัพธ์เป็น bot โดยเป็นได้ทั้ง ชื่อของบอตหรือรันไทม์ที่
ระบบรู้จัก หรือ กลุ่ม เมื่อการเอ่ยชื่อการตรวจสอบเฉพาะเจาะจงจะเผยกลไกภายในของ
ตัวตรวจจับ
bot.type | ความหมาย |
|---|---|
playwright, jsdom, electron | ระบุรันไทม์อัตโนมัติที่มีชื่อระบุไว้ได้ |
browser_use, claude_computer_use, skyvern, genspark, fellou | ระบุเอเจนต์ท่องเว็บ AI ที่มีชื่อระบุไว้ได้ |
automation | เครื่องมืออัตโนมัติ โดยไม่ระบุชื่อการตรวจสอบเฉพาะ |
headless | เบราว์เซอร์ที่ทำงานโดยไม่มีส่วนติดต่อผู้ใช้ |
antidetect | บิลด์แบบ anti-detect หรือปลอมลายนิ้วมือดิจิทัล |
extension | ส่วนขยายเบราว์เซอร์ที่ขับเคลื่อนระบบอัตโนมัติ พร็อกซี หรือ VPN |
privacy_browser | บิลด์เบราว์เซอร์ที่เสริมความเป็นส่วนตัว (เช่น Mullvad Browser) |
other | ตรวจพบแล้ว แต่อยู่นอกชุดคำศัพท์ที่เผยแพร่ |
รายการนี้ปิดตายโดยเจตนา การตรวจสอบที่ถูกเพิ่มเข้าไปในตัวตรวจจับในวันพรุ่งนี้จะปรากฏ
เป็น other แทนที่จะเผยชื่อภายในของมัน ให้มอง bot.type เป็นป้ายกำกับสำหรับแตกกิ่ง
ตรรกะ ไม่ใช่ enum ที่ครบถ้วนซึ่งต้องนำไปตรวจสอบความถูกต้อง — รันไทม์ที่มีชื่อระบุจะถูก
เพิ่มเข้ามาเรื่อย ๆ ตามเวลา
ในแพ็กเกจ Business และ Enterprise เพย์โหลด webhook จะมีอาร์เรย์ reasons — ไม่เกิน
แปดรายการ เรียงตามความสำคัญ รหัสจะระบุประเภทของการสังเกต ไม่เคยระบุการตรวจสอบที่
อยู่เบื้องหลัง
| รหัส | ความหมาย |
|---|---|
automation_signature | ร่องรอยของเครื่องมืออัตโนมัติ |
headless_browser | เบราว์เซอร์ที่ไม่มีส่วนติดต่อผู้ใช้ |
anonymous_browser | บิลด์ที่เสริมความเป็นส่วนตัวหรือแบบ anti-detect ที่ทำให้ดูเหมือนทั่วไป |
privacy_hardening | การตั้งค่าความเป็นส่วนตัวที่เข้มข้น |
behavior_anomaly | รูปแบบการโต้ตอบที่ไม่เหมือนมนุษย์ |
fingerprint_tampering | ค่าที่ควรสอดคล้องกันกลับไม่สอดคล้อง |
environment_anomaly | สภาพแวดล้อมรันไทม์ขัดแย้งกันเองภายใน |
identity_mismatch | ตัวตนที่ประกาศไว้ไม่ตรงกับสิ่งที่สังเกตได้ |
virtual_environment | อีมูเลเตอร์ แทนที่จะเป็นฮาร์ดแวร์จริง |
strong_automation_evidence | ตัวบ่งชี้บอตที่ชัดเจน — ชี้ขาดได้ด้วยตัวเอง |
detection_signal | การตรวจสอบอื่น ๆ ที่ถูกจุดชนวน |
severity มีค่าเป็น high, medium หรือ low และเป็น สัดส่วนของคำตัดสินที่
ประเภทนี้อธิบายได้ในการเข้าชมครั้งนั้น ไม่ใช่คุณสมบัติตายตัวของรหัส รหัสเดียวกันอาจ
มาเป็น high ในการเข้าชมหนึ่งและ low ในอีกการเข้าชมหนึ่ง จึงไม่ควรแคชไว้เป็นค่าคงที่
privacy_hardening ต้องระวังเป็นพิเศษ เพราะมันถูกจุดชนวนกับผู้เข้าชมทั่วไปที่ใส่ใจ
ความเป็นส่วนตัวไม่น้อยไปกว่ากรณีที่จงใจหลบเลี่ยง ให้ชั่งน้ำหนักร่วมกับสัญญาณอื่น
แทนที่จะตัดสินใจจากมันเพียงลำพัง
virtual_environment มาจากการตรวจจับอีมูเลเตอร์ บนเว็บไม่มีคำตัดสินแยกต่างหากว่า
"ทำงานอยู่ใต้ไฮเปอร์ไวเซอร์" เพราะเบาะแสที่เบราว์เซอร์มองเห็นได้ — ตัวเรนเดอร์ซอฟต์แวร์
แบบทั่วไป จำนวนคอร์ที่น้อยผิดปกติ — ปรากฏบ่อยพอ ๆ กันบนเครื่องธรรมดาที่ไม่มีไดรเวอร์ GPU
และในเซสชันรีโมตเดสก์ท็อป เราจึงไม่แปลงมันให้กลายเป็นคำตัดสินที่คุณต้องมาสงสัยภายหลัง
| ความสามารถ | ความพร้อมใช้งาน |
|---|---|
| การตรวจจับระบบอัตโนมัติ headless และเอเจนต์ AI | ทุกแพ็กเกจ |
| allowlist ครอว์เลอร์ที่ผ่านการยืนยัน | ทุกแพ็กเกจ |
| การตรวจจับอีมูเลเตอร์ | ทุกแพ็กเกจ |
ตัวบ่งชี้ anti-detect (bot.antidetectScore, 0..100) | Pro ขึ้นไป |
| รหัสเหตุผล บล็อกพฤติกรรม | Business ขึ้นไป |
| การตรวจจับ DevTools | Business ขึ้นไป |
การให้คะแนน anti-detect ยังอยู่ระหว่างการปรับเทียบ
bot.antidetectScoreถูก รายงานออกมาเพื่อให้คุณสังเกตและปรับนโยบายของคุณเองได้ — ให้ถือเป็นข้อมูลนำเข้าสำหรับ การตัดสินใจด้านความเสี่ยง ไม่ใช่เหตุผลเดี่ยว ๆ ในการบล็อก
การตรวจสอบที่มีเฉพาะบนมือถือไม่ได้ผลบนเว็บ การตรวจจับ root, jailbreak, แอปโคลน/แอปคู่ และ Frida ล้วนอาศัยสัญญาณเนทีฟบนมือถือซึ่งเบราว์เซอร์เก็บไม่ได้ TRACIO ให้บริการเฉพาะ SDK สำหรับเบราว์เซอร์ จึงควรอาศัยคำตัดสินด้านระบบอัตโนมัติ headless เอเจนต์ AI anti-detect อีมูเลเตอร์ และพฤติกรรม ซึ่งทำงานได้เต็มที่บนเว็บ
บอตที่ดีซึ่งเป็นที่รู้จักจะถูกจดจำจาก user-agent ก่อน แล้วจึงยืนยันเทียบกับ IP ที่ เชื่อมต่อเข้ามา — ทำ reverse DNS บน IP นั้น ตรวจว่าชื่อโฮสต์ที่ได้เป็นของโดเมนผู้ ให้บริการจริง แล้วทำ forward lookup เพื่อยืนยันว่าชื่อนั้นแปลงกลับมาเป็น IP เดิม นี่คือขั้นตอนการยืนยันที่ผู้ให้บริการครอว์เลอร์เผยแพร่ไว้เอง
| ครอว์เลอร์ | โดเมนที่ใช้ยืนยัน |
|---|---|
.googlebot.com, .google.com | |
| Bing | .search.msn.com |
| Apple | .applebot.apple.com |
| Yahoo | .crawl.yahoo.net |
| Yandex | .yandex.com, .yandex.net, .yandex.ru |
| DuckDuckGo | .duckduckgo.com |
ครอว์เลอร์ที่ผ่านการยืนยันจะได้ human ส่วนคำขอที่อ้างว่าเป็น Googlebot ทั้งที่ IP
เป็นของผู้อื่นอย่างชัดเจนจะถูกจัดเป็นบอต — การที่การค้นหาไม่พบผลลัพธ์หรือหมดเวลาไปเฉย ๆ
ไม่ถือเป็นหลักฐานของการปลอมแปลง
พลวัตของการโต้ตอบ — การเคลื่อนตัวชี้ จังหวะการพิมพ์ การเลื่อนหน้า — เข้าสู่คำตัดสิน
ในฐานะหลักฐานว่า มีมนุษย์อยู่จริงหรือไม่ ไม่ใช่ว่าเป็นมนุษย์คนไหน ในแพ็กเกจ
Business ขึ้นไป ผลรวมจะถูกส่งมาในบล็อก behavior ของ webhook
{ "behavior": { "score": 87, "verdict": "human", "confidence": 0.92 }}score อยู่ในช่วง 0..100 (ยิ่งสูงยิ่งเหมือนมนุษย์) verdict เป็น human,
uncertain หรือ bot และ confidence (0..1) บอกว่าคำตัดสินตั้งอยู่บนหลักฐานมาก
เพียงใด — การเข้าชมสั้น ๆ ที่มีการเคลื่อนตัวชี้เพียงสองครั้งจะได้คะแนนต่ำตรงนี้ แม้
คำตัดสินจะดูชี้ขาดก็ตาม
บล็อกนี้จะปรากฏ เฉพาะเมื่อมีการให้คะแนนพฤติกรรมเกิดขึ้นจริงสำหรับการเข้าชมนั้น การไม่มีบล็อกหมายถึง "ไม่มีข้อมูล" ไม่ได้หมายถึง "ไม่มีอะไรน่าสงสัย" — อย่าตีความการ ไม่มีอยู่ของมันว่าเป็นสัญญาณที่สะอาด
SDK ฝั่งไคลเอนต์เปิดให้ใช้ค่าบูลีนที่สะดวก result.bot.detected พร้อมกับ
confidence ในสเกล 0..100
const result = await tracio.getResult()
if (result.bot.detected) { console.warn(`Bot detected (confidence ${result.bot.confidence})`) showCaptcha() return}
await login(credentials)บนเซิร์ฟเวอร์ของคุณ ให้ดำเนินการจากการส่ง webhook คำตัดสินเรื่องบอต
อยู่ในอ็อบเจ็กต์ bot — bot.result และ bot.type
// `event` is the webhook delivery body (/docs/webhooks)app.post("/webhook/tracio", async (req, res) => { const event = req.body
if (event.bot?.result === "bot") { await db.blockedRequests.insert({ visitorId: event.visitorId, botType: event.bot.type, ip: event.ip, timestamp: new Date(), }) }
res.status(200).send("OK")})ค่าศูนย์และค่าว่างจะถูกตัดออกจากเพย์โหลด จึงควรอ่าน bot.type อย่างระมัดระวัง แทนที่
จะกำหนดให้เป็นฟิลด์บังคับในสคีมาของคุณ
การตรวจจับบอตของ TRACIO ออกแบบมาให้มีผลบวกลวงใกล้ศูนย์ แต่ก็ยังมีกรณีขอบอยู่
| สถานการณ์ | ความเสี่ยง | การบรรเทา |
|---|---|---|
ส่วนขยายเบราว์เซอร์ที่แก้ไข navigator | ต่ำ | การตรวจสอบข้ามหลายรายการช่วยกันไม่ให้การตรวจสอบเดียวจุดชนวนได้ |
| ซอฟต์แวร์ความปลอดภัยขององค์กร | ต่ำมาก | การจัดประเภทเป็น headless ต้องมีหลักฐานสนับสนุน |
| เครื่องมือช่วยการเข้าถึง | ไม่มี | API ด้านการเข้าถึงไม่ถูกนำมาใช้ในการตรวจจับบอต |
| ผู้ใช้ VPN/พร็อกซี | ไม่มี | สถานะทางเครือข่ายถูกติดตามแยกจากคำตัดสินเรื่องบอต |
หากคุณพบผลบวกลวง ให้ดู bot.type (และ reasons ในแพ็กเกจ Business ขึ้นไป) เพื่อ
เข้าใจว่าการสังเกตประเภทใดถูกจุดชนวน แล้วจึงปรับนโยบายของคุณ ดูสาเหตุที่พบบ่อยได้ที่
การแก้ไขปัญหา