Почему преобразование фильтров Adblock в Polipo требует большего, чем regex
Сохраняйте исключения и контекст запроса при оценке преобразования фильтров Adblock в Polipo.
Преобразователь должен сохранять смысл правила, а не только переносить его символы. Список фильтрации в браузере может зависеть от того, какой ресурс загружает страница, от типа ресурса и от правил исключений. Список блокировки, основанный только на URL, содержит меньше информации.
В существующей установке Polipo руководство определяет записи forbiddenFile как доменные имена или расширенные регулярные выражения POSIX. Поэтому regex, созданный для движка Python, не является автоматически допустимым в этом файле.
Начните с объявленного подмножества
- Преобразуйте безусловные шаблоны блокировки URL только после определения их якорей и поведения разделителя.
- Сохраняйте правила исключений, начинающиеся с @@. Добавление их шаблонов в файл запретов меняет их смысл на противоположный.
- Держите правила с контекстными параметрами, например ограничениями script или домена, вне преобразования, основанного только на URL, если цель не может представить эти условия.
- Исключите правила скрытия элементов: выбор элементов DOM страницы требует иного механизма.
Удаление неподдерживаемого параметра может расширить условное правило до безусловной блокировки. Сообщайте об этих пропущенных правилах, а не заявляйте молча о полном преобразовании.
Исторический пакет adblockparser умеет разбирать и оценивать подмножество правил Adblock Plus. Его README описывает игнорируемые правила скрытия элементов, сопоставление, зависящее от параметров, и другие ограничения; его репозиторий был архивирован 24 июня 2026 года. Относитесь к его выводу как к материалу для сверки с целевым движком, а не как к обещанию точного преобразования всего списка.
Учитывайте то, что видит прокси
Для обычных туннелей HTTPS фильтрация туннелей в Polipo видит имя хоста и порт, а не зашифрованный путь URL. Его forbiddenTunnelsFile — отдельная плоскость политики. Безупречно переведённое выражение пути всё равно не сможет совпасть с содержимым, которого прокси никогда не видит.
Задокументируйте сохранённое подмножество и при оценке преобразования проверяйте как предполагаемые блокировки, так и предполагаемые исключения. Загрузка файла подтверждает принятие синтаксиса, а не эквивалентную фильтрацию.