Википедия:Спам-лист/Основы

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Принцип работы спам-листов

Спам-лист представляет собою набор строк, каждая из которых — регулярное выражение, блокирующее определённый сайт или группу сайтов. Т.о. для исключения сайта из спам-листа достаточно удалить соответствующую строку. Выражение после знака # считается комментарием и не обрабатывается, поэтому для исключения можно также комментировать, проставляя # в начало строки. Существует 2 спам-листа:

  • meta:Spam blacklist — общий спам-лист для всех проектов фонда;
  • MediaWiki:Spam-blacklist — локальный спам-лист для раздела, записи в котором работают только для этого раздела.

Кроме спам-листов существует MediaWiki:Spam-whitelist (вайт-лист), в котором определяются локальные исключения, также представленные регулярными выражениями. вайт-лист окончательно определяет, будет ссылка заблокирована или нет, «перекрывая» записи в локальном или глобальном спам-листах полностью либо частично.

Обрабатываются ссылки в диффе любой правки, вне зависимости от флагов участника и типа правки (малая, откат). Если ссылка подпадает под выражение в одном из спам-листов, то она блокируется (либо разрешается).

Основы регулярных выражений

Согласно определению, регулярное выражение — паттерн (образец, шаблон) для синтаксического разбора текста.

Выражение может состоять из следующих частей (конкретные примеры и полная информация приведены по ссылкам, тут только небольшой summary):

  • Обычные символы (все, кроме представленных в пункте ниже) — записываются как есть.
  • Спецсимволы ( [ ] \ ^ $ . | ? * + ( ) { } ) — используются в качестве служебных для обозначения классов символов, группировки и т. п. При необходимости использовать спецсимволы в качестве обычных они должны быть экранированы с помощью знака \. То есть . обрабатывается как любой символ, \. — как точка.
  • Управляющие символы — представляют собой замену для некоторых символов, вывод которых может быть затруднён (\t — знак табуляции, \r — возврат каретки и т. д.).
  • Символьные классы — набор символов в [ ], представляют собой подстановку любого из набора символов. Например, [abc] означает любой из символов a, b, c; [0-9] — цифра от 0 до 9. Существуют сокращенные записи для частоиспользуемых классов (\d — только цифры, \S — непробельные символы и т. п.)
  • Символы позиционирования внутри строки — определяют, в каком месте строки должно встречаться искомое выражение.
  • Квантификаторы — подставляются после символа, класса или группы и определяют, сколько раз может повторятся выражение. Например, * означает, что предыдущий символ, класс символов или группа может повторятся сколько угодно. То есть a* — любая последовательность букв a.

Конкретные примеры

Суть Выражение Разъяснение Пример срабатывания Пример несрабатывания
Обычная блокировка сайта \bexample\.com \b обозначает начало слова (слова разделяются пробелами, точками и пр.). Нужно для того, чтобы запись abc\.com не блокировала сайт dabc.com
Точка экранируется обратным слэшем \
http://example.com
http://www.example.com
http://www.example.com/sd
http://eexample.com
http://example.ru
http://examplee.com
Блокировка подсайта \bsite1\.example\.com См. выше http://site1.example.com
http://www.site1.example.com
http://site1.example.com/bla
http://example.com
http://site2.example.com
Блокировка сайта за исключением главной \bexample\.com\.*\/ / — спецсимвол, его нужно экранировать обратным слэшем \. Вставлен, так как главная — единственная страница сайта без слеша.
\.* вставлено для блокирования ссылки вида example.com.
http://www.example.com/sd
http://www.example.com/
http://www.example.com
Блокировка сайта в разных доменных зонах \bexample\.(?:com|ru|us) Выражение в скобках — группа, | означает выбор одного из выражений, ?: - служебный модификатор, который в простых случаях не влияет на результат разбора, но влияет на его производительность http://www.example.ru
http://www.example.com
http://example.us/qw
http://www.example.by
Блокировка определённых подстраниц сайта \bexample\.com\.*\/(?:mp3|video)
\.* вставлено для блокирования ссылки вида example.com./mp3
http://www.example.com/mp3
http://www.example.com/video
http://example.com/video/tag
http://www.example.com
http://www.example.com/mp2
Блокировка подсайтов \.example\.com Лидирующая \. будет отсекать подсайты (так как он начинается с точки), оставляя главный сайт незаблокированным. http://www.example.com
http://abc.example.com
http://example.com

Часто задаваемые вопросы