การเปลี่ยนแปลงสตริง User Agent, กลยุทธ์ที่ Chrome และ Firefox ใช้เพื่อลดผลกระทบ และวิธีการที่คุณจะช่วยได้
Chrome และ Firefox จะมีขึ้นถึงเวอร์ชัน 100 ในอีก 2-3 เดือนข้างหน้า อาจทำให้เกิดการหยุดทำงาน ในเว็บไซต์ที่ต้องใช้การระบุเวอร์ชันของเบราว์เซอร์เพื่อดำเนินการตรรกะทางธุรกิจ โพสต์นี้ครอบคลุมไทม์ไลน์ของเหตุการณ์ กลยุทธ์ที่ Chrome และ Firefox ในการลดผลกระทบ และวิธีการที่คุณจะช่วยได้
สตริง User Agent
User-Agent (UA) คือสตริงที่เบราว์เซอร์ส่งในส่วนหัว HTTP เพื่อให้เซิร์ฟเวอร์ดำเนินการต่อไปนี้ได้
ระบุเบราว์เซอร์ สตริงนี้สามารถเข้าถึงได้ผ่าน JavaScript ด้วย
navigator.userAgent
โดยทั่วไปจะมีรูปแบบดังนี้
<browser_name>/<major_version>.<minor_version>
ตัวอย่างเช่น เบราว์เซอร์รุ่นล่าสุด ณ เวลาที่เผยแพร่ โพสต์นี้คือ:
- Chrome:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
- Firefox:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
- Safari:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15
เวอร์ชันหลัก 100 - หมายเลขเวอร์ชัน 3 หลัก
เวอร์ชันหลัก 100 คือความสำเร็จครั้งใหญ่สำหรับทั้ง Chrome และ Firefox และยังมี โอกาสที่จะเกิดความเสียหายบนเว็บไซต์ เมื่อเราเปลี่ยนจากตัวเลข 2 หลักไปเป็น หมายเลขเวอร์ชัน 3 หลัก นักพัฒนาเว็บใช้เทคนิคทุกชนิดเพื่อ การแยกวิเคราะห์สตริงเหล่านี้ ตั้งแต่โค้ดที่กำหนดเองไปจนถึงการใช้ไลบรารีการแยกวิเคราะห์ User-Agent ซึ่งสามารถใช้เพื่อกำหนดตรรกะการประมวลผลที่เกี่ยวข้อง User-Agent และกลไกการรายงานเวอร์ชันอื่นๆ จะรายงาน หมายเลขเวอร์ชัน 3 หลัก
ไทม์ไลน์ของเวอร์ชัน 100
เบราว์เซอร์เวอร์ชัน 100 จะเปิดตัวในเวอร์ชันทดลองก่อน (Chrome Canary, Firefox Nightly) ตามด้วยรุ่นเบต้า จากนั้นไปที่รุ่นเสถียร
เบราว์เซอร์ | ไทม์ไลน์ |
---|---|
Chrome (รุ่น กำหนดการ) | 29 มีนาคม 2022 |
Firefox (release กำหนดการ) | 3 พฤษภาคม 2022 |
ทำไมหมายเลขเวอร์ชัน 3 หลักอาจเป็นปัญหาได้
เมื่อเบราว์เซอร์เข้าถึงเวอร์ชัน 10 เป็นครั้งแรกเมื่อ 12 ปีที่แล้ว พบปัญหาหลายอย่าง ที่มีไลบรารีการแยกวิเคราะห์ของ User Agent เมื่อหมายเลขเวอร์ชันหลักเพิ่มจาก 1 ตัวเลขเป็น 2
หากไม่มีข้อกำหนดตายตัว เบราว์เซอร์ต่างๆ ก็มีรูปแบบ สำหรับสตริง User Agent และการแยกวิเคราะห์ User-Agent เฉพาะเว็บไซต์ ตอนนี้ เป็นไปได้ที่ไลบรารีการแยกวิเคราะห์บางไลบรารีอาจมีสมมติฐานหรือข้อบกพร่องที่ฮาร์ดโค้ด โดยไม่ได้คำนึงถึงหมายเลขเวอร์ชันหลัก 3 หลัก ห้องสมุดหลายแห่ง ปรับปรุงตรรกะการแยกวิเคราะห์เมื่อเบราว์เซอร์เปลี่ยนไปใช้หมายเลขเวอร์ชัน 2 หลัก การบรรลุเป้าหมายเลข 3 หลักคาดว่าจะทำให้เกิดปัญหาน้อยลง ไมค์ เทย์เลอร์ วิศวกรของทีม Chrome ได้ทำการสำรวจการแยกวิเคราะห์ UA ที่พบบ่อย ไลบรารีที่ไม่พบปัญหาใดๆ การเรียกใช้การทดสอบ Chrome ใน พบปัญหาบางอย่างซึ่งอยู่ระหว่างการแก้ไข
เบราว์เซอร์ทำอะไรบ้าง
ทั้ง Firefox และ Chrome ได้ทำการทดลองโดยที่เวอร์ชันปัจจุบันของ รายงานของเบราว์เซอร์เป็นเวอร์ชันหลัก 100 เพื่อตรวจหาความเป็นไปได้ การหยุดทำงานของเว็บไซต์ จึงทำให้เกิดปัญหาที่มีการรายงานบางประการ ซึ่งได้แก้ไขไปแล้วบางส่วน การทดสอบเหล่านี้จะยังคงทำงานต่อไปจนกว่าจะมีการเปิดตัวเวอร์ชัน 100
นอกจากนี้ยังมีกลยุทธ์การผ่อนปรนชั่วคราวด้วย ในกรณีที่เวอร์ชัน 100 การเผยแพร่ไปยังช่องทางที่มีความเสถียรจะทำให้เว็บไซต์ได้รับความเสียหายมากกว่าที่คาดไว้
การลดความเสี่ยงของ Chrome
ใน Chrome แผนการสำรองข้อมูลคือการใช้ Flag เพื่อตรึงเวอร์ชันหลักไว้ที่ 99 และรายงานหมายเลขเวอร์ชันหลักที่แท้จริงในส่วนเวอร์ชันย่อยของ สตริง User-Agent (โค้ดนี้มีแล้ว ลงจอดแล้ว)
เวอร์ชันของ Chrome ตามที่รายงานในสตริง User-Agent เป็นไปตามรูปแบบ
<major_version>.<minor_version>.<build_number>.<patch_number>
หากใช้แผนสำรอง สตริง User Agent จะมีลักษณะเช่นนี้ ดังนี้
99.101.4988.0
Chrome ยังทำการทดสอบเพื่อให้มั่นใจว่าการรายงานค่าตัวเลข 3 หลัก ในสตริงเวอร์ชันย่อยจะไม่ทำให้เกิดการหยุดทำงาน เนื่องจาก เวอร์ชันย่อยในสตริง User-Agent ของ Chrome ได้รายงาน 0 มานานมากแล้ว ทีม Chrome จะตัดสินใจว่าจะใช้ตัวเลือกการสำรองข้อมูลหรือไม่ ขึ้นอยู่กับจำนวนและความรุนแรงของปัญหาที่รายงาน
การผ่อนปรนชั่วคราวใน Firefox
ใน Firefox กลยุทธ์นี้จะขึ้นอยู่กับความสำคัญของการหยุดทำงาน Firefox
มี
กลไกการแทรกแซงในเว็บไซต์
ทีม Mozilla Webcompat สามารถแก้ไขเว็บไซต์ที่ใช้งานไม่ได้ใน Firefox ได้โดยใช้
Google Analytics หากคุณพิมพ์ about:compat
ในแถบ URL ของ Firefox คุณจะเห็น
ได้รับการแก้ไขอยู่ในขณะนี้ หากเว็บไซต์ไม่ทำงานโดยที่เวอร์ชันหลักเป็น 100 ใน
เฉพาะโดเมนที่เจาะจง คุณสามารถแก้ไขได้โดยส่งเวอร์ชัน 99 แทน
หากความเสียหายเกิดขึ้นเป็นวงกว้าง อาจทำให้มีการหยุดทำงานเวอร์ชันหลัก หมายเลข จากนั้นมีกลยุทธ์ที่เป็นไปได้ต่างๆ โดยแต่ละกลยุทธ์ ข้อดีและข้อเสีย Mozilla จะส่งหมายเลขเวอร์ชันจริงเป็นเวอร์ชันย่อยได้ ตรึงสตริงทั้งหมด หรือส่งหมายเลขเวอร์ชันจริง ผ่านพารามิเตอร์อื่นๆ
ทุกกลยุทธ์ที่เพิ่มความซับซ้อนให้กับสตริง User-Agent ผลกระทบต่อระบบนิเวศ มาช่วยกันหลีกเลี่ยงความแปลกใหม่ พฤติกรรมของคุณ
สิ่งที่คุณทำได้เพื่อช่วยเหลือ
ใน Chrome และ Firefox ตอนกลางคืน คุณสามารถกำหนดค่าเบราว์เซอร์ให้รายงาน เป็น 100 แล้วรายงานปัญหาที่พบ
กำหนดค่า Chrome เพื่อรายงานเวอร์ชันหลักเป็น 100
- ไปที่
chrome://flags/#force-major-version-to-100
- ตั้งค่าตัวเลือกเป็น
Enabled
กำหนดค่า Firefox Nightly เพื่อรายงานเวอร์ชันหลักเป็น 100
- เปิดเมนูการตั้งค่าของ Firefox Nightly
- ค้นหา "Firefox 100" จากนั้นทำเครื่องหมายที่ "Firefox 100 User-Agent สตริง" ตัวเลือก
การทดสอบและรายงานไฟล์
- หากคุณเป็นผู้ดูแลเว็บไซต์ ให้ทดสอบเว็บไซต์ด้วย Chrome และ Firefox 100 ตรวจสอบโค้ดและไลบรารีการแยกวิเคราะห์ของ User Agent และ ให้แน่ใจว่าบริษัทสามารถจัดการหมายเลขเวอร์ชัน 3 หลักได้ เรามี ได้รวบรวมบางส่วนของ ลายที่ได้รับความนิยมในปัจจุบัน
- หากคุณพัฒนาไลบรารีการแยกวิเคราะห์ User-Agent ให้เพิ่มการทดสอบเพื่อแยกวิเคราะห์ เวอร์ชันที่สูงกว่าและเท่ากับ 100 การทดสอบในระยะแรกแสดงให้เห็นว่า เวอร์ชันต่างๆ ของไลบรารีก็จัดการได้อย่างถูกต้อง แต่เว็บมีประวัติอันยาวนาน ดังนั้นหากคุณมีไลบรารีการแยกวิเคราะห์เวอร์ชันเก่า ในการตรวจสอบปัญหาและอัปเกรดในที่สุด
- หากคุณกำลังเรียกดูเว็บและสังเกตเห็นปัญหาต่างๆ เกี่ยวกับ เวอร์ชัน 100 ส่งรายงานใน webcompat.com