การกรองเนื้อหา

การกรองเนื้อหาและเครือข่ายในส่วนขยาย Chrome ทำได้หลายวิธี คู่มือนี้จะให้ภาพรวมของความสามารถในการกรองเนื้อหาที่ส่วนขยายใช้ได้ รวมถึงแนวทางการกรอง เทคนิค และ API ต่างๆ ที่ส่วนขยาย Chrome ใช้ได้

กรองคำขอเครือข่าย

วิธีหลักในการกรองคำขอเครือข่ายในส่วนขยาย Chrome คือการใช้ browser.declarativeNetRequest API Declarative Net Request ช่วยให้นักพัฒนาแอปบล็อกหรือแก้ไขคำขอเครือข่ายได้โดยการระบุกฎแบบประกาศ รูปแบบกฎ Declarative Net Request อิงตามความสามารถของไวยากรณ์รายการตัวกรองที่ตัวบล็อกโฆษณาส่วนใหญ่ใช้

กฎเหล่านี้ทำสิ่งต่อไปนี้ได้

  • บล็อกคำขอเครือข่าย
  • อัปเกรด URL Scheme เป็น Scheme ที่ปลอดภัย (http เป็น https หรือ ws เป็น wss)
  • เปลี่ยนเส้นทางคำขอของเครือข่าย
  • แก้ไขส่วนหัวของคำขอหรือการตอบกลับ

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

รวมกฎตัวกรองกับส่วนขยาย

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

สำหรับกฎ Declarative Net Request แบบคงที่ Chrome มีพูลที่แชร์ส่วนกลางของกฎ 300,000 รายการที่ชุดส่วนขยายที่ติดตั้งสามารถใช้ร่วมกันได้ นอกจากนี้ ส่วนขยายทุกรายการจะได้รับการรับประกันว่าจะมีโควต้ากฎแบบคงที่ 30000 รายการ เช่น หากผู้ใช้ติดตั้งส่วนขยายการกรองเนื้อหาเพียงรายการเดียว ส่วนขยายจะใช้กฎ Declarative Net Request แบบคงที่ได้สูงสุด 330,000 รายการ หากต้องการทราบว่ากฎนี้มีจำนวนเท่าใด รายการตัวกรอง EasyList ที่ได้รับความนิยมซึ่งตัวบล็อกโฆษณาส่วนใหญ่ใช้ประกอบด้วยกฎเครือข่ายประมาณ 35,000 รายการ

คุณจัดระเบียบกฎ Static Declarative Net Request เป็นชุดกฎต่างๆ ได้ ส่วนขยายระบุชุดกฎแบบคงที่ได้สูงสุด 100 ชุด และเปิดใช้ชุดกฎเหล่านี้ได้ครั้งละ 50 ชุด

เพิ่มกฎตัวกรองแบบไดนามิกในรันไทม์

รวมกฎบางอย่างเข้ากับส่วนขยายไม่ได้ แต่ส่วนขยายต้องเพิ่มในขณะรันไทม์ กฎเหล่านี้เรียกว่า "กฎแบบไดนามิก"

สำหรับกฎคำขอเครือข่ายแบบประกาศแบบไดนามิก Chrome อนุญาตให้มีกฎแบบไดนามิกที่ปลอดภัยสูงสุด 30,000 รายการต่อส่วนขยาย กฎส่วนใหญ่ถือเป็นกฎที่ปลอดภัย: block, allow, allowAllRequests หรือ upgradeScheme แม้ว่ากฎจะไม่ถือว่าปลอดภัย (เช่น redirect) แต่ก็ยังเพิ่มแบบไดนามิกได้ แต่จะมีขีดจำกัดสูงสุดที่ต่ำกว่าคือ 5,000 ซึ่งจะนับรวมในขีดจำกัดกฎแบบไดนามิก 30,000 รายการด้วย เพื่อช่วยให้เห็นภาพชัดเจนขึ้น 98-99% ของกฎในรายการตัวกรองของ EasyList เป็นกฎที่ปลอดภัย

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

ปรับกฎตามคำขอที่สังเกตเห็น

ระบบนิเวศโฆษณามีการเปลี่ยนแปลงอยู่ตลอดเวลา และต้องอัปเดตตัวกรองเนื้อหาตามนั้น การรวม browser.webRequest เข้ากับกฎ Declarative Net Request แบบไดนามิกจะช่วยให้วิเคราะห์คำขอเครือข่ายเพื่อหาการละเมิดความเป็นส่วนตัวที่อาจเกิดขึ้นและบล็อกคำขอเหล่านี้ในอนาคตได้

แนวทางพื้นฐานมีดังนี้

  1. วิเคราะห์คำขอเว็บโดยใช้ browser.webRequest API และพยายามระบุคำขอที่ไม่เป็นไปตามข้อกำหนดด้านความเป็นส่วนตัวโดยอัตโนมัติ เช่น การใช้แมชชีนเลิร์นนิง
  2. สร้างกฎ Declarative Net Request แบบไดนามิกสำหรับคำขอแต่ละรายการที่ระบุไว้ในขั้นตอนที่ 2 เพื่อให้ระบบบล็อกคำขอที่คล้ายกันในอนาคต
  3. (ไม่บังคับ) ส่งกฎ Declarative Net Request ที่ระบุกลับไปยังเซิร์ฟเวอร์เพื่อให้เพิ่มเป็นกฎ Declarative Net Request แบบคงที่ได้เมื่ออัปเดตส่วนขยายครั้งถัดไป

ข้อดีของแนวทางนี้คือการวิเคราะห์จะเกิดขึ้นแบบไม่พร้อมกันและจะไม่ส่งผลเสียต่อประสิทธิภาพของเว็บไซต์

อนุญาตให้ผู้ใช้กำหนดกฎการกรองของตนเอง

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

กรององค์ประกอบในหน้าเว็บ

การกรองคำขอเครือข่ายเป็นเพียงส่วนสำคัญส่วนหนึ่งของการกรองเนื้อหา อีกส่วนสำคัญคือการนำเนื้อหาที่ไม่ต้องการออกจากหน้าเว็บโดยตรง ตัวอย่างเช่น กฎในรายการตัวกรองของ EasyList มากกว่า 40% กำหนดวิธีที่ไคลเอ็นต์ควรซ่อนองค์ประกอบของหน้าเว็บ

ซึ่งทำได้โดยใช้สคริปต์เนื้อหา Content Script จะทำงานในบริบทของหน้าเว็บและทำการเปลี่ยนแปลงในหน้าเว็บได้โดยใช้ DOM

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

กรองคำขอเครือข่ายในส่วนขยายที่ติดตั้งนโยบาย

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

สกัดกั้นคำขอไปยังส่วนต่างๆ

คุณสามารถกรองคำขอการนำทางได้โดยใช้กฎคำขอเครือข่ายแบบประกาศ เช่น คุณอาจต้องการข้าม URL ติดตามผลที่เปลี่ยนเส้นทางผู้ใช้ไปยังปลายทางที่ต้องการ วิธีหนึ่งในการจัดการปัญหานี้คือการเปลี่ยนเส้นทางคำขอการนำทาง https://tracker.com?redirect=https%3A%2F%2Fexample.com ไปยังหน้าส่วนขยาย (ซึ่งต้องกำหนดค่าเป็นทรัพยากรที่เข้าถึงได้จากเว็บ) จากนั้นจะเรียกใช้สคริปต์เพื่อดึงเป้าหมายการเปลี่ยนเส้นทางและเปลี่ยนเส้นทางไปยังปลายทางโดยใช้ window.location.replace("https://example.com") เพื่อหลีกเลี่ยงเครื่องมือติดตามลิงก์