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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ปรับกฎตามคำขอที่สังเกตได้

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

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

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

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

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

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

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

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

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

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

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

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

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

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