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

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

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

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

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

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

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

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

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

เราพิจารณาแล้วว่ากฎตัวกรองบางข้อ เช่น กฎที่มีการดำเนินการเป็น block หรือ allow มีความปลอดภัยมากกว่าและมีแนวโน้มที่จะถูกละเมิดน้อยกว่า และยังเป็นกฎตัวกรองการบล็อกโฆษณาโดยส่วนใหญ่อีกด้วย จากข้อมูลนี้ ฉันจึงร่างและแชร์ข้อเสนอในกลุ่มชุมชน Web Extensions เพื่อกำหนดชุดกฎที่เราพิจารณาว่ามีความเสี่ยงน้อยกว่าและอนุญาตให้มีกฎเหล่านี้ไม่เกิน 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 ในทุกกรณี เราจะยังคงสื่อสารเกี่ยวกับงานที่ทำอยู่ และใช้กลุ่มชุมชนส่วนขยายเว็บเป็นประจำเพื่อแลกเปลี่ยนความคิดเห็นเกี่ยวกับแนวคิดและแนวทางที่เราต้องการพิจารณาในลำดับต่อไป