ในปีที่ผ่านมา เราได้พูดคุยอย่างจริงจังกับผู้ให้บริการที่อยู่เบื้องหลังส่วนขยายการบล็อกเนื้อหาหลายรายเกี่ยวกับวิธีปรับปรุงแพลตฟอร์มส่วนขยาย 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 ในทุกกรณี เราจะยังคงสื่อสารเกี่ยวกับงานที่ทำอยู่ และใช้กลุ่มชุมชนส่วนขยายเว็บเป็นประจำเพื่อแลกเปลี่ยนความคิดเห็นเกี่ยวกับแนวคิดและแนวทางที่เราต้องการพิจารณาในลำดับต่อไป