การปรับปรุงการกรองเนื้อหาในไฟล์ Manifest V3

ตลอดปีที่ผ่านมา เรามีส่วนร่วมในการพูดคุยกับผู้ให้บริการที่อยู่เบื้องหลังส่วนขยายการบล็อกเนื้อหาหลายรายการเกี่ยวกับวิธีปรับปรุงแพลตฟอร์มส่วนขยาย MV3 เราได้ดำเนินการปรับปรุงที่สำคัญตามการพูดคุยเหล่านี้ ซึ่งส่วนใหญ่เกิดขึ้นใน WebExtensions Community Group (WECG) ร่วมกับเบราว์เซอร์อื่นๆ

กฎชุดคงที่เพิ่มเติม

โดยปกติแล้ว ชุดกฎตัวกรองจะจัดกลุ่มเป็นรายการ เช่น รายการทั่วไปอาจมีกฎที่ใช้กับผู้ใช้ทุกคน ส่วนรายการที่เฉพาะเจาะจงอาจซ่อนเนื้อหาเฉพาะสถานที่ซึ่งผู้ใช้บางรายต้องการบล็อก จนกระทั่งเมื่อไม่นานมานี้ เราอนุญาตให้แต่ละส่วนขยายเสนอรายการ 50 รายการ (หรือ "ชุดกฎแบบคงที่") ให้แก่ผู้ใช้ และเปิดใช้รายการเหล่านี้ได้พร้อมกัน 10 รายการ ในการพูดคุยกับชุมชน นักพัฒนาส่วนขยายได้แสดงหลักฐานที่น่าเชื่อถือซึ่งแสดงให้เห็นว่าจำนวนนี้ต่ำเกินไปสำหรับบางกรณีการใช้งาน หลังจากพิจารณาประสิทธิภาพของ API ใน Chrome โดยคำนึงถึงข้อสนทนาเหล่านี้ ตอนนี้เราอนุญาตให้เปิดใช้พร้อมกันได้สูงสุด 50 รายการ (โปรดทราบว่าจำนวนนี้สูงกว่าขีดจํากัด 20 รายการที่ขอใน WECG อย่างมาก) นอกจากนี้ เรายังอนุญาตให้ใช้ชุดกฎได้ทั้งหมด 100 ชุด ฟีเจอร์นี้จะพร้อมใช้งานใน Chrome 120 และทั้ง Firefox และ Safari รองรับการขึ้นขีดจำกัดนี้ โดยทั้ง 2 เบราว์เซอร์ได้ให้ข้อมูลเบื้องต้นเกี่ยวกับข้อเสนอนี้

กฎแบบไดนามิกเพิ่มเติม

กฎส่วนใหญ่เป็นแบบ "คงที่" และมาพร้อมกับการอัปเดตส่วนขยายแต่ละครั้ง อย่างไรก็ตาม เพื่อรองรับการอัปเดตบ่อยขึ้นและกฎที่ผู้ใช้กำหนด ส่วนขยายจะเพิ่มกฎแบบไดนามิกได้ด้วย โดยที่นักพัฒนาแอปไม่ต้องอัปโหลดส่วนขยายเวอร์ชันใหม่ไปยัง Chrome เว็บสโตร์

เมื่อส่วนขยายสามารถแก้ไขคำขอแบบไดนามิกในลักษณะที่ไม่ได้ตรวจสอบระหว่างการตรวจสอบของ Chrome เว็บสโตร์ ผู้ใช้จะเสี่ยงที่จะถูกฟิชชิงหรือถูกขโมยข้อมูล เช่น กฎการเปลี่ยนเส้นทางอาจถูกใช้ในทางที่ผิดเพื่อแทรกลิงก์แอฟฟิลิเอตโดยไม่ได้รับความยินยอม

ด้วยเหตุนี้ เราจึงอนุญาตให้ส่วนขยายเพิ่มกฎได้สูงสุด 5,000 รายการเท่านั้น ซึ่งจะช่วยส่งเสริมให้ใช้ฟังก์ชันการทำงานนี้อย่างประหยัดและช่วยให้เราตรวจหาการละเมิดได้ง่ายขึ้น

อย่างไรก็ตาม นักพัฒนาส่วนขยายอย่าง AdGuard และ Adblock Plus ได้ทําการวิเคราะห์และแชร์ข้อมูลของตนเองว่าขีดจํากัดที่สูงขึ้นจะช่วยให้มีกฎที่อัปเดตมากขึ้นและช่วยให้ผู้ใช้ที่มีรายการที่กําหนดเองจํานวนมากขึ้นสามารถย้ายข้อมูลไปยัง Manifest V3 ได้ ความจริงแล้ว AdGuard รายงานว่ามีการเปลี่ยนแปลงรายการยอดนิยมมากกว่า 2,600 รายการในแต่ละสัปดาห์ และผู้ใช้ 5 เปอร์เซ็นต์ที่ใช้รายการตัวกรองที่กำหนดเอง ผู้ใช้ 1 ใน 4 รายการดังกล่าวมีกฎแบบไดนามิกรวมกันมากกว่า 5,000 รายการ (แหล่งที่มา) AdGuard ระบุว่านี่เป็นปัญหาสำคัญในการย้ายข้อมูลส่วนขยายไปยัง Manifest V3 และเราได้รับความคิดเห็นที่คล้ายกันจากผู้บล็อกเนื้อหารายอื่นๆ

เราพิจารณาแล้วว่ากฎตัวกรองบางรายการ เช่น กฎที่มีการดำเนินการเป็น block หรือ allow นั้นปลอดภัยกว่ามากและมีโอกาสถูกละเมิดน้อยกว่า และยังเป็นกฎตัวกรองโฆษณาส่วนใหญ่ด้วย จากข้อมูลนี้ เราจึงได้ร่างและแชร์ข้อเสนอในกลุ่มชุมชนส่วนขยายเว็บเพื่อกำหนดชุดกฎที่เราพิจารณาว่ามีความเสี่ยงต่ำและอนุญาตให้มีจำนวนได้สูงสุด 30,000 รายการ เรายังคงมีขีดจํากัดสูงสุดเพื่อหลีกเลี่ยงการถดถอยของประสิทธิภาพ

ข้อเสนอนี้ได้รับการสนับสนุนในกลุ่มชุมชนส่วนขยายเว็บ เราจึงนำมาใช้งาน ตั้งแต่ Chrome 121 เป็นต้นไป กฎ DNR ที่ปลอดภัยจะมีจำนวนได้สูงสุด 30,000 รายการ ซึ่งเรากำหนดว่าเป็นกฎที่มีการดำเนินการเป็น block, allow, allowAllRequests หรือ upgradeScheme

จากข้อมูลที่ AdGuard แชร์ กฎประมาณ 98-99 เปอร์เซ็นต์ควรได้รับประโยชน์จากขีดจำกัดที่สูงขึ้นนี้ ระบบจะยังคงรองรับกฎที่เหลืออยู่และสามารถเพิ่มกฎภายในขีดจำกัดที่มีอยู่

ซึ่งพร้อมให้บริการใน Chrome เป็นค่าคงที่ MAX_NUMBER_OF_DYNAMIC_RULES ขีดจํากัดของกฎสําหรับกฎคําขอสุทธิแบบไดนามิกอื่นๆ ทั้งหมดจะยังคงอยู่ที่ 5,000 รายการ

ขนาดชุดกฎลดลง

ใน Chrome 118 เราได้เปลี่ยนค่าเริ่มต้นของช่อง isUrlFilterCaseSensitive เป็น false ตามความคิดเห็นจากชุมชน ช่องนี้ควบคุมว่ากฎที่กรองตาม URL จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หรือไม่ และเราพบว่านักพัฒนาแอปส่วนใหญ่มีค่าเริ่มต้นที่ต่างกันในส่วนขยาย ด้วยเหตุนี้ จึงต้องตั้งค่าหลายครั้ง การเปลี่ยนแปลงนี้จะช่วยให้นักพัฒนาแอปลดขนาดชุดกฎได้อย่างมาก

สิ่งที่ควรทำถัดไป

เรามุ่งมั่นที่จะลงทุนใน declarativeNetRequest API ต่อไปเพื่อให้รองรับกรณีการใช้งานได้มากที่สุด และหวังว่าจะได้ร่วมงานกับชุมชนต่อไป โดยเฉพาะอย่างยิ่ง เราอยากขอบคุณสมาชิก WECG สำหรับการมีส่วนร่วม รวมถึง AdGuard ที่แชร์ข้อมูลจำนวนมากซึ่งช่วยขับเคลื่อนการทำงานนี้ และผู้ให้บริการเบราว์เซอร์ทุกรายที่มีส่วนร่วมสำคัญในการออกแบบ API นี้

เราจะตรวจสอบขีดจำกัดที่มีอยู่ต่อไปเพื่อทำการปรับเปลี่ยนตามความจําเป็น เพื่อเป็นการสนับสนุนเรื่องนี้ เราวางแผนที่จะแชร์ข้อมูลบางส่วนที่เรารวบรวมไว้เป็นส่วนหนึ่งของงานนี้ในอนาคตอันใกล้ นอกจากนี้ เรายังพยายามเพิ่มความสามารถอื่นๆ เช่น ความสามารถในการจับคู่กับส่วนหัวการตอบกลับ ซึ่งเป็นคำขอที่เราได้รับบ่อยครั้งจากส่วนขยายโปรแกรมดู PDF ไม่ว่าในกรณีใด เราจะสื่อสารเกี่ยวกับงานของเราต่อไป และใช้กลุ่มชุมชนส่วนขยายเว็บเป็นพื้นที่สำหรับพูดคุยเกี่ยวกับแนวคิดและปรับแนวคิดที่เราอยากนำไปใช้ต่อไป