คลังข้อมูลนี้มีชุดข้อมูลสตริง User-Agent ที่ผ่านการทำให้เป็นมาตรฐานและคัดสรรแล้ว เก็บไว้ในไฟล์ JSON และออกแบบมาเพื่อใช้เป็นตารางค้นหา เพื่อสกัดข้อมูลผู้ใช้งานแบบง่าย เช่น ไคลเอนต์ User-Agent และระบบปฏิบัติการ.
ถูกนำไปใช้งานเป็นส่วนประกอบของ PageviewsOnline แต่ที่นี่เผยแพร่เพื่อการใช้งานทั่วไป.
ชุดข้อมูลนี้มาพร้อมสคริปต์ช่วยตรวจสอบข้อมูลแบบง่ายๆ และส่งออกไปยังรูปแบบอื่นๆ หรือภาษาโปรแกรมต่างๆ (เช่น Java).
ปรัชญาโครงการ
เป้าหมายของโครงการนี้ไม่ใช่การให้ระบบตรวจจับ user-agent ที่ไร้ข้อผิดพลาดหรืแม่นยำอย่างสมบูรณ์ แต่เป็นวิธีที่ใช้งานได้จริงด้วยความพยายามอย่างดีที่สุดที่สามารถทำได้ ซึ่งจะพัฒนาขึ้นจากการใช้งานจริงและการมีส่วนร่วมของชุมชน
การตรวจหาผู้ใช้งานจากยูเอเจนต์เป็นเรื่องที่ไม่สมบูรณ์ในตัวมันเอง แทนที่จะพยายามให้ถูกต้องแบบสมบูรณ์ โปรเจ็กต์นี้มุ่งเน้นที่การเป็น:
- ภาคปฏิบัติ
- ดูแลรักษาได้ง่าย
- โปร่งใส
- เพียงพอสำหรับการวิเคราะห์และการจำแนกในโลกจริง
ความแม่นยำจะเพิ่มขึ้นตามเวลา ผ่านการอัปเดตที่คัดสรร, การใช้งานจริง และการมีส่วนร่วมของชุมชน.
การวิเคราะห์เชิงประมาณและนิพจน์ปกติที่ซับซ้อนมักแลกความสามารถในการทำนายที่แน่นอนกับการเพิ่มความแม่นยำที่น้อยนิด.
โครงการนี้ให้ความสำคัญกับ:
- ความโปร่งใสเหนือเวทมนตร์
- ข้อมูลที่คัดสรรไว้มากกว่าตรรกะที่ไม่โปร่งใส
- ผลลัพธ์ที่อธิบายได้มากกว่าการตรวจจับที่เป็นการคาดเดา
คุณสมบัติ
- ชุดข้อมูล User Agent ที่ผ่านการตรวจสอบโดยมนุษย์และได้มาตรฐาน
- พฤติกรรมการค้นหาที่เรียบง่ายและคาดเดาได้
- รูปแบบที่ใช้ JSON ง่ายต่อการตรวจสอบและควบคุมเวอร์ชัน
- สคริปต์ตรวจสอบน้ำหนักเบา
- ส่งออกตัวช่วยสำหรับภาษาอื่นๆ (เช่น Java)
- ใช้งานจริงในสภาพแวดล้อม SaaS สำหรับการผลิต
สตริงตัวแทนผู้ใช้งานที่ได้มาตรฐาน
เป้าหมายหลักของโครงการนี้คือการสกัดข้อมูลเชิงสูงที่มีเสถียรภาพออกจากสตริงของผู้ใช้งาน (user agent) อย่างรวดเร็วและสามารถคาดเดาได้.
เพื่อรองรับสิ่งนี้ สตริงตัวแทนผู้ใช้งานแต่ละรายการจะถูกทำให้เป็นมาตรฐานก่อนการประมวลผล การทำให้เป็นมาตรฐานจะลดความผันผวนที่ไม่เสถียร (เช่น หมายเลขเวอร์ชันและความแตกต่างของตัวพิมพ์) ในขณะที่ยังคงรักษาความหมายในเชิงโครงสร้างและเชิงความหมายของตัวแทนผู้ใช้งาน
สตริงตัวแทนผู้ใช้งานถูกปรับให้เป็นมาตรฐานตามขั้นตอนดังต่อไปนี้:
- แทนที่ตัวเลขทั้งหมด (0-9) ด้วยตัวอักษรแทนที่ x ซึ่งจะช่วยลดเสียงรบกวนที่เกิดจากการเปลี่ยนเวอร์ชัน ในขณะเดียวกันก็รักษาโครงสร้างและความยาวของโทเคน.
- แปลงสตริงทั้งหมดให้เป็นตัวพิมพ์เล็ก (User agent tokens) ตามขนบธรรมเนียมจะไม่แยกแยะขนาดตัวอักษร และการทำให้เป็นตัวพิมพ์เล็กจะช่วยให้การค้นหามีความสม่ำเสมอและเชื่อถือได้
ตัวอย่างเช่น สตริงตัวแทนผู้ใช้งานด้านล่างนี้:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
ถูกปรับให้เป็นมาตรฐาน:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
แนวทาง normalization นี้ช่วยให้ยูสเซอร์เอเจนต์สามารถถูกรวมกลุ่ม เปรียบเทียบ และดูแลรักษาได้ง่ายขึ้นตามกาลเวลา ในขณะที่ยังคงความถูกต้องเพียงพอสำหรับการจำแนกรายละเอียดในระดับสูงของไคลเอนต์และระบบปฏิบัติการ
ด้วยการกำจัดความแปรปรวนที่ขึ้นกับเวอร์ชันและกรณีของตัวอักษร กระบวนการค้นหาจะคาดการณ์ได้มากขึ้นและทนต่อการเปลี่ยนแปลงของ user agent ในอนาคต.
รูปแบบข้อมูล
แต่ละรายการตัวแทนผู้ใช้งานที่ผ่านการทำให้เป็นมาตรฐานประกอบด้วย:
- id - สตริงตัวแทนผู้ใช้งานที่ผ่านการทำให้เป็นมาตรฐาน
- client_family - การจำแนกลูกค้าในระดับสูง (เช่น เบราว์เซอร์, บอท, แอป)
- os_family - การจำแนกประเภทระบบปฏิบัติการระดับสูง
ฟิลด์ที่แน่นอนอาจเปลี่ยนแปลงได้ตามกาลเวลาเมื่อชุดข้อมูลเติบโต
พฤติกรรมการค้นหา
การจับคู่ User agent ถูกดำเนินการกับสตริงที่ผ่านการทำให้เป็นมาตรฐาน.
การจับคู่ที่ตรงกันอย่างแม่นยำเป็นที่ต้องการมากกว่า; การจับคู่แบบบางส่วนหรือแบบเชิง heuristic ถูกหลีกเลี่ยงโดยตั้งใจเพื่อให้พฤติกรรมคาดการณ์ได้และง่ายต่อการดีบัก
การมีส่วนร่วม
การมีส่วนร่วมยินดีมากและช่วยปรับปรุงคุณภาพโดยรวมและความถูกต้องของโครงการนี้
วิธีที่มีผลกระทบสูงสุดในการมีส่วนร่วมคือการเพิ่มหรือปรับปรุงรายการ user agent ที่ผ่านการทำให้เป็นมาตรฐานในไฟล์ user_agents.json พร้อมกับข้อมูลการจำแนกที่เกี่ยวข้อง.
เมื่อการเปลี่ยนแปลงของคุณพร้อมแล้ว กรุณาส่ง pull request ที่ประกอบด้วยข้อมูลที่จำเป็นและ/หรือการอัปเดตโค้ด
แม้ข้อมูลบางส่วนหรือข้อมูลที่ยังไม่ครบถ้วนก็มีประโยชน์และได้รับการชื่นชม — การมีส่วนร่วมทุกครั้งช่วยปรับปรุงความครอบคลุมและความน่าเชื่อถือในระยะยาว.
เริ่มต้นใช้งาน (คู่มือฉบับย่อ)
แกนหลักของโปรเจ็กต์นี้คือชุดข้อมูล JSON ที่อยู่ในไดเรกทอรี data/.
เพื่อช่วยในการบำรุงรักษาและการนำข้อมูลนี้ไปใช้งานซ้ำ ที่เก็บนี้ประกอบด้วยชุดสคริปต์ Node.js ขนาดเล็กที่เรียบง่าย ซึ่งทำการตรวจสอบความถูกต้องพื้นฐานและการส่งออกข้อมูล.
คำสั่งที่ใช้งานทั่วไป:
- npm run test - ตรวจสอบข้อมูล JSON และหาข้อผิดพลาดด้านโครงสร้างหรือความสอดคล้อง
- npm run build - สร้าง จัดเรียง และส่งออกข้อมูลที่ผ่านการทำให้เป็นมาตรฐานไปยังรูปแบบของภาษาโปรแกรมอื่นๆ (เช่น Java) เพื่อการบูรณาการที่ง่ายขึ้น.
เครื่องมือเหล่านี้ออกแบบมาให้เรียบง่ายเป็นพิเศษ มุ่งเน้นความถูกต้องของข้อมูลและความสามารถในการพกพา มากกว่าการประมวลผลที่ซับซ้อน
สตริงของ User-Agent ไม่เชื่อถือได้
การสกัดข้อมูลที่ถูกต้องจากสตริงยูสเซอร์เอเจนต์นั้นโดยธรรมชาติแล้วไม่น่าเชื่อถือด้วยเหตุผลหลายประการ:
- ไม่มีมาตรฐานหรือข้อกำหนดอย่างเป็นทางการใดๆ ที่ควบคุมโครงสร้างหรือเนื้อหาของสตริงผู้ใช้งาน
- หลายตัวแทนผู้ใช้งานตั้งใจปลอมตัวหรือลอกเลียนแบบตัวแทนผู้ใช้งานอื่นเพื่อความเข้ากันได้และเหตุผลด้านเวอร์ชันที่ล้าสมัย
ด้วยเหตุนี้ การระบุข้อมูล User-Agent ให้แม่นยำและสม่ำเสมออย่างครบถ้วนจึงทำได้ยากมาก.
ดังนั้น ไลบรารีนี้ควรถูกมองว่าเป็นวิธีแก้ปัญหาที่ทำด้วยความพยายามสูงสุดเท่าที่จะเป็นไปได้ ไม่ใช่แหล่งความจริงที่รับประกันได้หรือมีอำนาจ
ด้วยการใช้งานอย่างต่อเนื่องและการมีส่วนร่วมของชุมชน ความแม่นยำจะดีขึ้นตามเวลา
เวอร์ชันและเสถียรภาพ
ชุดข้อมูลอาจมีการเปลี่ยนแปลงตามกาลเวลาเมื่อยูเอเจนต์ของผู้ใช้งานพัฒนา
การจำแนกประเภทไม่ถือเป็นการเปลี่ยนแปลงที่ทำให้โปรแกรมใช้งานไม่ได้ แม้จะอยู่ระหว่างเวอร์ชันย่อย.
ผู้บริโภคควรถือผลลัพธ์เป็นเพียงข้อแนะนำที่ทำด้วยความพยายามสูงสุด ไม่ใช่การรับประกันทางสัญญา
ใบอนุญาต
โครงการนี้และข้อมูลของมันถูกเผยแพร่ภายใต้ Apache License 2.0 (Apache-2.0).
การใช้งานทางการค้า การดัดแปลง และการแจกจ่ายใหม่ได้รับอนุญาต
เรายินดีรับการมีส่วนร่วมและขอบคุณสำหรับการสนับสนุน。
เครื่องหมายการค้า
PageviewsOnline, Two-Dot-Oh, และโลโก้ที่เกี่ยวข้อง, ชื่อบริการ หรือการสร้างตราสินค้าใดๆ เป็นเครื่องหมายการค้าของ Two-Dot-Oh.
โครงการนี้เป็นโอเพ่นซอร์ส อย่างไรก็ตาม การใช้ชื่อ PageviewsOnline หรือแบรนด์ที่เกี่ยวข้องในบริบทของผลิตภัณฑ์ บริการ หรือข้อเสนอใดๆ จะไม่ได้รับอนุญาตเว้นแต่จะได้รับความยินยอมเป็นลายลักษณ์อักษรล่วงหน้า
สำเนาและงานที่ดัดแปลงต้องใช้ชื่อกับตราสินค้าที่แตกต่างกัน และห้ามระบุหรือสื่อถึงการรับรองโดย PageviewsOnline หรือ Two-Dot-Oh หรือความเกี่ยวข้องกับ PageviewsOnline หรือ Two-Dot-Oh