แยกวิเคราะห์สตริง user agent
ตัวแยกวิเคราะห์ user agent อ่านโทเค็นใน header User-Agent แล้วแปลงเป็นฟิลด์แบบมีโครงสร้าง ด้านล่างนี้คือสตริงคงที่สามรายการ — เบราว์เซอร์เดสก์ท็อป โทรศัพท์ และ crawler ของเครื่องมือค้นหา — ที่ผ่านตัวแยกวิเคราะห์ตัวเดียวกับเครื่องมือแบบโต้ตอบ ตามด้วยกฎที่ตัวแยกวิเคราะห์ใช้
ตัวอย่างพร้อมคำอธิบาย
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
- เบราว์เซอร์
- Chrome 120.0.0.0
- เอนจิน
- Blink
- ระบบปฏิบัติการ
- Windows 10/11
- ประเภทอุปกรณ์
- เดสก์ท็อป
- อุปกรณ์
- ไม่ทราบ
- สถาปัตยกรรม CPU
- x64
- Bot / crawler
- ไม่
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1
- เบราว์เซอร์
- Safari 17.0
- เอนจิน
- WebKit
- ระบบปฏิบัติการ
- iOS 17.0
- ประเภทอุปกรณ์
- มือถือ
- อุปกรณ์
- Apple iPhone
- สถาปัตยกรรม CPU
- ไม่ทราบ
- Bot / crawler
- ไม่
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.216 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- เบราว์เซอร์
- Chrome 120.0.6099.216
- เอนจิน
- Blink
- ระบบปฏิบัติการ
- Android 6.0.1
- ประเภทอุปกรณ์
- Bot
- อุปกรณ์
- Nexus 5X Build/MMB29P
- สถาปัตยกรรม CPU
- ไม่ทราบ
- Bot / crawler
- Googlebot
Chrome บน Windows ส่ง Windows NT 10.0 ซึ่ง Windows 10 และ Windows 11 ใช้ร่วมกัน ระบบปฏิบัติการจึงแสดงเป็น 10/11 บน iPhone นั้น Version/17.0 บอกเวอร์ชันของ Safari และ iPhone OS 17_0 บอกเวอร์ชันของ iOS สตริง Googlebot ฝัง user agent ของ Chrome บน Android ไว้ครบถ้วน แต่ลายเซ็น crawler จะถูกตรวจก่อน ประเภทอุปกรณ์จึงเป็น bot ส่วนฟิลด์เบราว์เซอร์และระบบปฏิบัติการยังคงแสดงสิ่งที่ crawler อ้างว่าเป็น
กฎสำคัญ
- ลายเซ็น crawler จะถูกตรวจก่อน ได้แก่ Googlebot, Bingbot, DuckDuckBot, YandexBot, Baiduspider, Slackbot, Twitterbot และ facebookexternalhit หากตรงกัน ประเภทอุปกรณ์จะถูกตั้งเป็น bot แม้จะมีโทเค็นเบราว์เซอร์อยู่ก็ตาม
- เบราว์เซอร์ถูกจับคู่ตามลำดับตายตัว — Edge (Edg/), Opera (OPR/), Samsung Internet, Firefox, Chrome, Safari แล้วจึง Chromium — เพราะสตริงส่วนใหญ่มีโทเค็นของเบราว์เซอร์อื่นปนอยู่ด้วย เอนจินจะเป็นไปตามเบราว์เซอร์: Blink, Gecko หรือ WebKit
- ระบบปฏิบัติการมาจากส่วนแพลตฟอร์มในวงเล็บ: iPhone, iPad, Android, Windows NT, CrOS, Mac OS X หรือ Linux เครื่องหมายขีดล่างในหมายเลขเวอร์ชันของ Apple จะถูกแปลงเป็นจุด
- ประเภทอุปกรณ์เป็นแท็บเล็ตสำหรับ iPad, โทเค็น Tablet หรือ Android ที่ไม่มีโทเค็น Mobile เป็นมือถือสำหรับ iPhone หรือ Android ที่มีโทเค็น Mobile และเป็นเดสก์ท็อปสำหรับ Windows, macOS, Linux และ ChromeOS
- สิ่งใดที่สตริงไม่ได้ระบุจะคงเป็นไม่ทราบ (null ในผลลัพธ์ JSON) แทนที่จะเดา ความเชื่อมั่นจะสูงก็ต่อเมื่อจับคู่ได้ทั้งเบราว์เซอร์และระบบปฏิบัติการ
- ไคลเอนต์ใดก็ส่ง user agent ของ Googlebot ได้ หากต้องการยืนยันว่าเป็น crawler ของ Google จริง ให้ค้นหา DNS ย้อนกลับ (reverse DNS) จาก IP ของคำขอ ตรวจว่าชื่อลงท้ายด้วย googlebot.com หรือ google.com แล้วยืนยันอีกครั้งด้วยการค้นหาแบบไปข้างหน้า (forward lookup)