เครื่องมือสร้างตัวระบุผู้ใช้แบบสุ่ม - สร้างสตริงเบราว์เซอร์
สร้างสตริงตัวระบุผู้ใช้ที่แท้จริงสำหรับ Chrome, Firefox, Safari และ Edge เพื่อทดสอบความเข้ากันได้ของเบราว์เซอร์ การออกแบบที่ตอบสนอง และ API ด้วยตัวระบุเบราว์เซอร์ที่สมจริง
เครื่องมือสุ่มตัวแทนผู้ใช้
สร้างสตริงตัวแทนผู้ใช้เบราว์เซอร์แบบสุ่มและสมจริงสำหรับการทดสอบการพัฒนาเว็บ
ตัวแทนผู้ใช้ที่สร้างขึ้น
เอกสารประกอบการใช้งาน
เครื่องมือสร้าง User Agent แบบสุ่ม
เครื่องมือสร้าง user agent แบบสุ่มจะสร้าง สตริง user agent ตัวอย่าง ซึ่งเป็นข้อความสั้น ๆ ที่เว็บเบราว์เซอร์ส่งให้เว็บไซต์เพื่อระบุว่าเป็นเบราว์เซอร์ใด เครื่องมือนี้สร้างสตริงตามรูปแบบจริงที่ Chrome, Firefox, Safari และ Edge ใช้ ทั้งบนอุปกรณ์เดสก์ท็อปและอุปกรณ์เคลื่อนที่ เพื่อให้นักพัฒนาทดสอบการตอบสนองของเว็บไซต์ต่อเบราว์เซอร์ต่าง ๆ ได้โดยไม่ต้องติดตั้งทุกเบราว์เซอร์
สตริง User Agent คืออะไร?
ทุกครั้งที่เบราว์เซอร์ร้องขอเว็บเพจ เบราว์เซอร์จะส่งส่วนหัว HTTP User-Agent ส่วนหัวนี้เป็นข้อความหนึ่งบรรทัดที่ระบุชื่อเบราว์เซอร์ รุ่นของเบราว์เซอร์ ระบบปฏิบัติการ และเอนจินการเรนเดอร์ (ส่วนของเบราว์เซอร์ที่ใช้วาดหน้าเว็บ) เว็บไซต์สามารถอ่านส่วนหัวนี้เพื่อเลือกเลย์เอาต์หรือคุณลักษณะที่จะส่งกลับไป
สตริง user agent ทั่วไปมีลักษณะดังนี้:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
2เบราว์เซอร์เกือบทุกชนิดเริ่มต้นสตริงด้วย "Mozilla/5.0" ซึ่งเป็นสิ่งตกค้างจากช่วงทศวรรษ 1990 เมื่อเว็บไซต์ตรวจสอบคำดังกล่าวเพื่อดูว่าเบราว์เซอร์มีความสามารถเพียงพอสำหรับการแสดงหน้าเว็บหรือไม่ เบราว์เซอร์รุ่นใหม่ยังคงโทเค็นนี้ไว้เพื่อไม่ให้การตรวจสอบแบบเก่าบล็อกการเข้าถึง
เครื่องมือนี้ทำงานอย่างไร
เครื่องมือนี้มีตัวควบคุมสามรายการ:
- ประเภทอุปกรณ์ – เดสก์ท็อปหรืออุปกรณ์เคลื่อนที่
- ตระกูลเบราว์เซอร์ – Chrome, Firefox, Safari หรือ Edge
- ระบบปฏิบัติการ – Windows, macOS หรือ Linux สำหรับเดสก์ท็อป และ iOS หรือ Android สำหรับอุปกรณ์เคลื่อนที่
การผสมตัวเลือกบางอย่างไม่มีอยู่จริง จึงมีการจำกัดตัวเลือกไว้ Safari จะแสดงเฉพาะบน macOS และ iOS เพราะ Apple ไม่ได้เผยแพร่ Safari สำหรับ Windows, Linux หรือ Android ส่วน Chrome, Firefox และ Edge ใช้ได้กับระบบปฏิบัติการทุกระบบที่ระบุ รวมถึง iOS ซึ่งทำงานเป็นเชลล์ครอบเอนจิน WebKit ของ Apple แทนที่จะใช้เอนจินของตนเอง
การคลิก "สร้างใหม่" จะสร้างสตริงจากการตั้งค่าทั้งสามรายการและหมายเลขรุ่นที่สุ่มเลือก ปุ่ม "คัดลอก" จะคัดลอกผลลัพธ์ไปยังคลิปบอร์ด
รูปแบบสตริง User Agent ตามเบราว์เซอร์
เบราว์เซอร์แต่ละชนิดเติมข้อมูลลงในแม่แบบที่คล้ายกันด้วยโทเค็นของตนเอง
Chrome (เดสก์ท็อป):
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/major.0.0.0 Safari/537.36
2Chrome (Android):
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/major.0.0.0 Mobile Safari/537.36
2Chrome (iOS):
1Mozilla/5.0 (platform) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/major.0.build.build Mobile/15E148 Safari/604.1
2Firefox (เดสก์ท็อป):
1Mozilla/5.0 (platform; rv:major.0) Gecko/20100101 Firefox/major.0
2Firefox (Android):
1Mozilla/5.0 (Android version; Mobile; rv:major.0) Gecko/major.0 Firefox/major.0
2Firefox (iOS):
1Mozilla/5.0 (platform) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/major.0 Mobile/15E148 Safari/605.1.15
2Safari (macOS):
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/major.minor Safari/605.1.15
2Safari (iOS):
1Mozilla/5.0 (iPhone; CPU iPhone OS major_minor like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/major.minor Mobile/15E148 Safari/604.1
2Edge (เดสก์ท็อป):
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/major.0.0.0 Safari/537.36 Edg/major.0.build.build
2Edge (Android):
1Mozilla/5.0 (platform) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/major.0.0.0 Mobile Safari/537.36 EdgA/major.0.build.build
2Edge (iOS):
1Mozilla/5.0 (platform) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/major.minor EdgiOS/major.0.build.build Mobile/15E148 Safari/605.1.15
2Apple กำหนดให้เบราว์เซอร์ทุกชนิดบน iOS ใช้ WebKit ดังนั้นรูปแบบ iOS ข้างต้นจึงใช้โทเค็นเอนจิน AppleWebKit/605.1.15 ร่วมกับ Safari และเพิ่มตัวระบุเฉพาะเบราว์เซอร์ ได้แก่ CriOS/ สำหรับ Chrome, FxiOS/ สำหรับ Firefox และ EdgiOS/ สำหรับ Edge ทั้งหมดไม่มีโทเค็น Chrome/ หรือ Gecko/ ส่วน Safari และ Edge บน iOS ยังส่งโทเค็น Version/ ซึ่งระบุรุ่น Safari ที่มาพร้อมระบบปฏิบัติการ จึงตรงกับรุ่น iOS ในสตริงเดียวกันเสมอ
ตั้งแต่ 2021 Chrome และเบราว์เซอร์ที่ใช้ Chromium เช่น Edge ได้ตรึงหมายเลขรุ่นส่วนใหญ่บนเดสก์ท็อปและ Android เพื่อลดรายละเอียดที่ใช้ระบุตัวตนในส่วนหัว โดยเป็นการเปลี่ยนแปลงที่ Google เรียกว่า "การลดข้อมูล User-Agent" แทนที่จะใช้หมายเลขบิลด์จริง โทเค็น Chrome ในสตริงเหล่านี้จะเป็น major.0.0.0 เสมอ (เช่น 128.0.0.0) และเครื่องมือนี้ก็ทำงานในลักษณะเดียวกัน ข้อยกเว้นคือโทเค็นเฉพาะของ Edge ได้แก่ Edg/ บนเดสก์ท็อป EdgA/ บน Android และ EdgiOS/ บน iOS รวมถึง Chrome ที่ทำงานบน iOS (CriOS/) ซึ่งยังคงมีหมายเลขบิลด์ครบสี่ส่วน เนื่องจากนโยบายลดข้อมูลของ Google ไม่ครอบคลุมกรณีเหล่านี้
Firefox ไม่ได้ใช้การตรึงรุ่นแบบเดียวกัน โดยปกติสตริงรุ่นจริงมีเพียงสองส่วน คือ major.0 และเป็นรูปแบบที่เครื่องมือนี้สร้างขึ้น รุ่น Firefox สามส่วน เช่น 95.0.2 อาจพบได้หลังการติดตั้งแพตช์ความปลอดภัย แต่เครื่องมือนี้สร้างเฉพาะรูปแบบสองส่วน
ตัวอย่างผลลัพธ์
Chrome บนเดสก์ท็อป Windows:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
2Firefox บนเดสก์ท็อป macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:130.0) Gecko/20100101 Firefox/130.0
2Safari บนเดสก์ท็อป macOS:
1Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15
2Edge บนเดสก์ท็อป Windows:
1Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.2903.86
2Chrome บนอุปกรณ์เคลื่อนที่ Android:
1Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36
2Edge บนอุปกรณ์เคลื่อนที่ Android:
1Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 EdgA/128.0.2952.62
2Safari บนอุปกรณ์เคลื่อนที่ iPhone:
1Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1
2Firefox บนอุปกรณ์เคลื่อนที่ Android:
1Mozilla/5.0 (Android 13; Mobile; rv:130.0) Gecko/130.0 Firefox/130.0
2Chrome บนอุปกรณ์เคลื่อนที่ iPhone:
1Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/128.0.6613.98 Mobile/15E148 Safari/604.1
2Firefox บนอุปกรณ์เคลื่อนที่ iPhone:
1Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/130.0 Mobile/15E148 Safari/605.1.15
2Edge บนอุปกรณ์เคลื่อนที่ iPhone:
1Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 EdgiOS/128.0.2952.62 Mobile/15E148 Safari/605.1.15
2ความแตกต่างระหว่างเดสก์ท็อปกับอุปกรณ์เคลื่อนที่
สตริงของเดสก์ท็อประบุระบบปฏิบัติการและมักระบุสถาปัตยกรรมหน่วยประมวลผลด้วย เช่น Win64; x64 สำหรับ Windows แบบ 64 บิต หรือ Intel Mac OS X สำหรับ Mac รูปแบบเหล่านี้ค่อนข้างสม่ำเสมอ เนื่องจากมีแพลตฟอร์มเดสก์ท็อปให้รองรับเพียงไม่กี่ประเภท
สตริงของอุปกรณ์เคลื่อนที่มักเพิ่มคำว่า "Mobile" เพื่อให้เว็บไซต์ทราบว่าควรส่งเลย์เอาต์ที่เหมาะกับการสัมผัส อุปกรณ์ iOS ระบุตัวเองว่า "iPhone" พร้อมรุ่น iOS ซึ่งเขียนด้วยขีดล่าง (17_4) และตัดเลขแพตช์ศูนย์ท้ายออก ดังนั้นจึงเป็น 17_4 ไม่ใช่ 17_4_0 ส่วน Android แตกต่างออกไป เนื่องจากนโยบายลดรุ่นแบบเดียวกับที่มีผลต่อหมายเลขบิลด์ของ Chrome Chrome และ Edge บน Android จึงรายงานแพลตฟอร์มเป็น Linux; Android 10; K เสมอ ไม่ว่า Android รุ่นใดหรือโทรศัพท์รุ่นใดกำลังทำงานอยู่ก็ตาม "K" เป็นตัวยึดแทน ไม่ใช่รหัสอุปกรณ์จริง และรุ่น Android จริงจะถูกซ่อนไว้ Firefox สำหรับ Android ไม่ได้ตรึงรุ่นในลักษณะเดียวกัน แต่รายงานรุ่นหลักจริงของ Android และไม่รวมรุ่นอุปกรณ์เลย หากเครื่องมือสร้างสตริงแสดงรุ่นโทรศัพท์เฉพาะ เช่น หมายเลขรุ่น Galaxy ภายในสตริง Chrome บน Android ก็จะไม่ตรงกับการทำงานจริงของ Chrome รุ่นปัจจุบัน
เหตุใดสตริง User Agent จึงดูซับซ้อน
สตริงดูรกเนื่องจากแพตช์เพื่อความเข้ากันได้ที่สะสมมาหลายทศวรรษ ในช่วง "สงครามเบราว์เซอร์" ปลายทศวรรษ 1990 บางเว็บไซต์ส่งหน้าเว็บที่ดีกว่าให้เฉพาะ Netscape หรือเฉพาะ Internet Explorer โดยตรวจสอบคีย์เวิร์ดในส่วนหัว เบราว์เซอร์คู่แข่งจึงเพิ่มคีย์เวิร์ดเดียวกันลงในสตริงของตนเพื่อไม่ให้ถูกปฏิเสธ นั่นเป็นเหตุผลที่สตริงของ Chrome ยังคงกล่าวถึง "Safari" และ "like Gecko" แม้จะไม่ได้ใช้เอนจินใดในชื่อนั้น โทเค็นแต่ละรายการเป็นร่องรอยของการประสานงานเพื่อรองรับการตรวจสอบความเข้ากันได้แบบเก่า ไม่ใช่คำอธิบายซอฟต์แวร์ที่ตรงตามความเป็นจริง
เนื่องจากเว็บไซต์จำนวนมากยังคงแยกวิเคราะห์สตริงเหล่านี้ ผู้ผลิตเบราว์เซอร์จึงไม่สามารถลบข้อมูลที่รกรุงรังออกได้ทันทีโดยไม่ทำให้หน้าเว็บเสียหาย สิ่งที่จะมาแทนที่ในระยะยาวเรียกว่า User-Agent Client Hints ซึ่งส่งรายละเอียดเบราว์เซอร์เป็นส่วนหัวที่มีโครงสร้างแยกกัน แทนที่จะรวมไว้ในสตริงยาวหนึ่งชุด แต่ส่วนหัวแบบเดิม User-Agent ยังคงถูกส่งไปทุกที่เพื่อรองรับความเข้ากันได้ย้อนหลัง
การใช้งานทั่วไป
- การทดสอบความเข้ากันได้ ตรวจสอบการแสดงผลของหน้าเว็บเมื่อพบว่าเป็นเบราว์เซอร์เฉพาะ โดยไม่ต้องติดตั้งเบราว์เซอร์นั้น
- การตรวจสอบการออกแบบแบบตอบสนอง ยืนยันว่าเว็บไซต์ส่งเลย์เอาต์สำหรับอุปกรณ์เคลื่อนที่เมื่อได้รับ user agent ของอุปกรณ์เคลื่อนที่ และส่งเลย์เอาต์เดสก์ท็อปในกรณีอื่น
- ชุดการทดสอบอัตโนมัติ ป้อนสตริง user agent หลายรูปแบบลงในสคริปต์ทดสอบ เพื่อตรวจสอบว่าโค้ดตรวจจับเบราว์เซอร์จัดการแต่ละรูปแบบได้อย่างถูกต้อง
- การทดสอบ API และส่วนหัว ตรวจสอบว่าเซิร์ฟเวอร์ทำงานถูกต้องเมื่อไคลเอ็นต์ประเภทต่าง ๆ ส่งคำขอ
ข้อจำกัด
ส่วนหัว user agent เป็นเพียงสัญญาณหนึ่งจากหลายสัญญาณที่เว็บไซต์อ่านได้ สคริปต์ที่ทำงานอยู่ในหน้าเว็บสามารถตรวจสอบรายละเอียดอื่น ๆ ได้หลายสิบรายการ เช่น แบบอักษรที่ติดตั้ง ขนาดหน้าจอ และวิธีที่การ์ดแสดงผลเรนเดอร์ภาพทดสอบ ซึ่งเป็นเทคนิคที่เรียกว่าการสร้างลายนิ้วมือดิจิทัล การตั้งค่า user agent เป็น Chrome ขณะใช้งาน Firefox จริงจะไม่สามารถหลอกเว็บไซต์ที่ตรวจสอบสัญญาณอื่นเหล่านี้ได้ เพราะความไม่ตรงกันตรวจพบได้ง่าย อย่างไรก็ตาม สำหรับงานพัฒนาและประกันคุณภาพทั่วไป สตริงที่สร้างขึ้นและมีรูปแบบถูกต้องก็เพียงพอสำหรับทดสอบการตอบสนองของโค้ดฝั่งเซิร์ฟเวอร์และไคลเอ็นต์ของเว็บไซต์ต่อเบราว์เซอร์และอุปกรณ์ต่าง ๆ
คำถามที่พบบ่อย
สตริง user agent คืออะไร เป็นข้อความหนึ่งบรรทัดที่เบราว์เซอร์ส่งไปพร้อมกับคำขอเว็บทุกครั้ง โดยระบุเบราว์เซอร์ รุ่น ระบบปฏิบัติการ และเอนจินการเรนเดอร์ เซิร์ฟเวอร์ใช้ข้อมูลนี้เพื่อตัดสินใจว่าจะส่งเนื้อหาหรือเลย์เอาต์ใดกลับมา
เหตุใดรุ่นของ Chrome จึงลงท้ายด้วย .0.0.0 เสมอ
ตั้งแต่ 2021 Chrome ได้ตรึงหมายเลขรุ่นส่วนใหญ่ที่รายงานในส่วนหัว User-Agent เพื่อลดการสร้างลายนิ้วมือดิจิทัล เฉพาะหมายเลขรุ่นหลักเท่านั้นที่เปลี่ยนแปลง ส่วนที่เหลือคงที่เป็น .0.0.0 โทเค็นเฉพาะของ Edge และเบราว์เซอร์ทุกชนิดบน iOS เป็นข้อยกเว้น โดยยังแสดงหมายเลขบิลด์ครบถ้วน
เหตุใดสตริงของ iPhone จึงระบุว่า "Safari" แม้เลือกเบราว์เซอร์อื่น
Apple กำหนดให้เบราว์เซอร์ทุกชนิดบน iOS ใช้เอนจิน WebKit ของบริษัท ดังนั้น Chrome, Firefox และ Edge บน iOS จึงรายงาน WebKit และลงท้ายด้วยโทเค็น Safari/ ชื่อเบราว์เซอร์จะระบุด้วยตัวระบุแยกต่างหาก ได้แก่ CriOS/ สำหรับ Chrome, FxiOS/ สำหรับ Firefox และ EdgiOS/ สำหรับ Edge
เหตุใดสตริง Android จึงไม่แสดงรุ่นโทรศัพท์ของฉัน
Chrome และ Edge รุ่นใหม่บน Android รายงานสตริงแพลตฟอร์มคงที่ Linux; Android 10; K สำหรับอุปกรณ์และ Android ทุกเวอร์ชันจริง ซึ่งเป็นส่วนหนึ่งของนโยบายลดรุ่นแบบเดียวกับที่มีผลต่อหมายเลขบิลด์ของ Chrome รุ่นอุปกรณ์และรุ่น Android จริงจะไม่ถูกเปิดเผย
ฉันใช้ user agent ที่สร้างขึ้นสำหรับการขูดข้อมูลเว็บได้หรือไม่
สามารถเปลี่ยนส่วนหัวได้ แต่เว็บไซต์อาจตรวจพบความไม่ตรงกันจากสัญญาณอื่น และการขูดข้อมูลอาจละเมิดข้อกำหนดการให้บริการของเว็บไซต์หรือกฎของ robots.txt ควรตรวจสอบนโยบายของเว็บไซต์ก่อนขูดข้อมูล
สตริงที่สร้างขึ้นเหมือนกับสตริงจากอุปกรณ์จริงทุกประการหรือไม่ สตริงนี้ใช้รูปแบบและลำดับโทเค็นเดียวกับเบราว์เซอร์จริงประเภทนั้น เนื่องจากการตรึงรุ่นของ Chrome และ Edge บน Android สตริง Chrome บน Android ที่สร้างขึ้นกับสตริงจริงอาจเหมือนกันในส่วนแพลตฟอร์ม เพราะอุปกรณ์จริงรายงานค่าคงที่เดียวกัน
Client Hints คืออะไร และใช้แทนสตริง user agent ได้หรือไม่
Client Hints เป็นระบบรุ่นใหม่ที่ส่งรายละเอียดเบราว์เซอร์และอุปกรณ์เป็นส่วนหัว HTTP แยกกัน แทนที่จะรวมไว้ในสตริงเดียว เบราว์เซอร์กำลังเพิ่มการรองรับระบบนี้ แต่ส่วนหัวแบบเดิม User-Agent ยังคงใช้อย่างแพร่หลาย เนื่องจากเว็บไซต์เดิมจำนวนมากยังพึ่งพาส่วนหัวนี้