Loess.ru

having fun

Squid url_regex и роскомнадзор

роскомнадзор

Как превратить список запрещённых сайтов из роскомнадзора в регулярные выражения для Squid:

Борясь с требованиями органов этой страны посредством нескольких мануалов с хабра, обнаружил проблемы. Одна из них заключается в том, что предложенные парсеры xml делают список url-ов, однако же squid понимает только регулярные выражения. Она проявляется в неблокировке encoded-урлов (имеющих вид …%D0%B0%20…). После часа гугления оказалось, что squid url_regex понимает родной дебиану utf-8, и было принято решение преобразовывать список в регулярные выражения с помощью php rawurldecode().

Squid (3.2.9) повёл себя немножко странно — никаких сообщений об ошибках регулярных выражений не показывал, но блокировал (все) сайты просто по попавшим на него ip-адресам. В итоге оказалось, что в реестре содержатся урлы с немыслимыми символами .^$*+?()[{\|, практически все из которых должны быть экранированы для использования в регулярном выражении.

Требования выполнены, encoded-урлы заблокированы, но осадок остался: после небольшого обзора списка урлов, в нём обнаружились китайские буквы, скобки всех мастей, явные ошибки в encoded-символах, сессионные хеши, просто поисковые запросы, партнёрские ссылки и прочая дрянь, которой совсем не место там. Список показывает, что он формируется «абы как», людьми крайне далёкими от web-технологий, благо, что хоть запросы в google и yandex ныне блокировать не пытаются (=

Кстати, пробовали просматривать запрещённые сайты у ростелекома и мтс — на данный момент они вольно трактуют порядок блокировки (читай: прикрывают анус), блокируя весь домен независимо от наличия ip-адреса в реестре, хотя официальная позиция по этому поводу указана (хоть и весьма криво) и в методичке (п. 4.3. с дополнением), и в FAQ-е: вопросы 85, 75, 74, 54, 47, 11, 12:

Претензий к оператору связи по отсутствию блокировки запрещенного ресурса в связи со сменой IP- адреса не возникнет, до момента включения нового IP- адреса в Реестр.

Таким образом, ограничение доступа к запрещенной информации может осуществляться любым из названных способов: по доменному имени, указателю страниц сайтов или сетевому адресу.

При этом оператор связи вправе выбрать любой из названных способов ограничения доступа к запрещенной информации, в зависимости от имеющихся у него технических средств.

По мнению Роскомнадзора наиболее предпочтительными являются способы ограничения доступа по доменному имени и указателю страницы сайта. Способ ограничения доступа по сетевому адресу рекомендуется к применению при отсутствии у оператора связи другой возможности, а также при использовании провайдерами хостинга, обеспечивающими размещение в сети «Интернет» сайтов, содержащих противоправный контент, сетевых протоколов передачи данных, поддерживающих шифрование.

— Правомерно-ли блокировать https ресурсы путем подмены SSL сертификатов?
— Нет, такие действия со стороны оператора связи не правомерны

Третий локальный оператор вообще блокирует ~50% реестра и только по ip-адресу, видимо, самостоятельно решая, что блокировать, а что — нет.

Судя из вышеприведённых цитат, органы сами не знают, как с интернетом бороться, предлагая множество трактовок процесса блокировки, одна неэффективнее другой. Жаль, что, всё же, xml схему постоянно правят и уже настроенные скрипты с парсером придётся переделывать в что-то более гибкое из-за добавления всё новых и новых логик с неоднозначными описаниями.

Кстати, все госзакупки работают примерно также криво и абсолютно только с кодировкой win1251 😀

P.S.:

Как относиться к Роскомнадзору — это одна из самых сложных этических загадок человечества. Осуждать или не осуждать, совершать или нет, какие мотивы этого можно считать достойными, а какие не очень, — большой вопрос. Википедия приводит 17 наиболее распространенных причин, по которым люди совершают Роскомнадзор. Среди них Роскомнадзор, Роскомнадзор, Роскомнадзор и Роскомнадзор. В православной традиции Роскомнадзор считается одним из наиболее тяжких грехов. Коран также осуждает Роскомнадзор. А вот у древних майя ритуальный Роскомнадзор был довольно популярен. Наверное, поэтому они все и умерли.

3 Responses to Squid url_regex и роскомнадзор

  1. mxdmg says:

    Меня тоже улыбает уже вторые сутки формат ссылок в реестре…
    танцы с бубном вокруг экранирования запрещенных символов привели к блокировке всего ютуба)))
    Видимо где-то переборщил)))

    можешь поделиться списком всех символов которые экранировал для кальмарчика?

    • Loess says:

      Там всё элементарно — ищем кривой урл, экранируем пару символов из набора pcre синтаксиса (открывающие скобки, квантификаторы, …), тестируем до полной адекватности работы, берём следующий, и т.д. у нас стоит так:
      $line=strtr($line,
      array(
      '?'=>'\?','/'=>'\/',
      '^'=>'\^','$'=>'\$','|'=>'\|',
      '.'=>'\.','*'=>'\*',
      '['=>'\[',']'=>'\]',
      '{'=>'\{','}'=>'\}',
      //'-'=>'\-',
      '+'=>'\+',
      '('=>'\(',')'=>'\)',
      //'%'=>'\%'
      )

  2. anon says:

    s/\~/\\~/g
    s/&/\\&/g
    s/\^/\\^/g
    s/\*/\\*/g
    s/\+/\\+/g
    s/\?/\\?/g
    s/\(/\\(/g
    s/\)/\\)/g
    s/\|/\\|/g
    s/\[/\\[/g
    s/\]/\\]/g
    y/\(/\\(/
    y/\)/\\)/
    y/\{/\\{/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.