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

โอลิเวอร์ ดังค์
โอลิเวอร์ ดังก์

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

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

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

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

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

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

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

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

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

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

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

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

ลดขนาดชุดกฎแล้ว

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

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

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

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