ทำไมการแปลงตัวกรอง Adblock ไปเป็น Polipo จึงต้องมากกว่า regex
รักษาข้อยกเว้นและบริบทของคำขอเมื่อประเมินการแปลงตัวกรอง Adblock ไปเป็น Polipo
ตัวแปลงต้องรักษาความหมายของกฎ ไม่ใช่เพียงย้ายอักขระของกฎนั้น รายการตัวกรองของเบราว์เซอร์อาจขึ้นอยู่กับว่าหน้าเว็บโหลดทรัพยากรใด ประเภทของทรัพยากร และกฎข้อยกเว้น รายการบล็อกที่อิงเฉพาะ URL มีข้อมูลน้อยกว่า
ในการติดตั้ง Polipo ที่มีอยู่ คู่มือของ Polipo กำหนดรายการ forbiddenFile เป็นชื่อโดเมนหรือนิพจน์ปกติแบบขยายของ POSIX ดังนั้น regex ที่สร้างสำหรับเอนจินของ Python จึงไม่ถูกต้องโดยอัตโนมัติในไฟล์นั้น
เริ่มจากซับเซตที่ประกาศไว้
- แปลงรูปแบบการบล็อก URL ที่ไม่มีเงื่อนไขหลังจากกำหนดแองเคอร์และพฤติกรรมของตัวคั่นแล้วเท่านั้น
- รักษากฎข้อยกเว้นที่ขึ้นต้นด้วย @@ การเพิ่มรูปแบบของกฎเหล่านั้นลงในไฟล์ปฏิเสธจะกลับความหมาย
- เก็บกฎที่มีตัวเลือกตามบริบท เช่น ข้อจำกัดของ script หรือโดเมน ไว้นอกการแปลงที่อิงเฉพาะ URL เว้นแต่ปลายทางจะแสดงเงื่อนไขเหล่านั้นได้
- ตัดกฎที่ซ่อนองค์ประกอบออก การเลือกองค์ประกอบ DOM ของหน้าเว็บต้องใช้กลไกอื่น
การลบตัวเลือกที่ไม่รองรับอาจขยายกฎแบบมีเงื่อนไขให้กลายเป็นการบล็อกแบบไม่มีเงื่อนไข จงรายงานกฎที่ข้ามไปนั้นแทนการอ้างอย่างเงียบ ๆ ว่าการแปลงสมบูรณ์
แพ็กเกจ adblockparser ในอดีตสามารถแยกวิเคราะห์และประเมินกฎ Adblock Plus บางส่วนได้ README ของแพ็กเกจบันทึกกฎซ่อนองค์ประกอบที่ถูกละเลย การจับคู่ที่ขึ้นกับตัวเลือก และข้อจำกัดอื่น ๆ คลังเก็บของแพ็กเกจถูกเก็บถาวรเมื่อวันที่ 24 มิถุนายน 2026 ให้ถือว่าผลลัพธ์ของแพ็กเกจเป็นวัสดุที่ต้องนำไปเทียบกับเอนจินปลายทาง ไม่ใช่คำมั่นว่าการแปลงทั้งรายการจะซื่อตรง
คำนึงถึงสิ่งที่พร็อกซีมองเห็น
สำหรับอุโมงค์ HTTPS ทั่วไป การกรองอุโมงค์ของ Polipo มองเห็นชื่อโฮสต์และพอร์ต ไม่เห็นเส้นทาง URL ที่เข้ารหัส ไฟล์ forbiddenTunnelsFile ของ Polipo เป็นพื้นนโยบายแยกต่างหาก นิพจน์เส้นทางที่แปลอย่างสมบูรณ์แบบก็ยังเทียบกับเนื้อหาที่พร็อกซีไม่เคยเห็นไม่ได้
บันทึกซับเซตที่คงไว้ และตรวจทั้งการบล็อกที่ตั้งใจและข้อยกเว้นที่ตั้งใจเมื่อประเมินการแปลง การที่ไฟล์โหลดได้พิสูจน์เพียงการยอมรับไวยากรณ์ ไม่ใช่การกรองที่เทียบเท่า