- Это расширение подключается сотрудниками Фэндома по запросу.
Фильтр злоупотреблений (англ. AbuseFilter) — расширение MediaWiki, позволяющее анализировать действия участников, проверяя их таким образом на соответствие определённым правилам. Было создано летом 2009 года[1].
Описание[]
После подключения на википроект расширение начинает проверять многие действия участников: правки, удаления, переименовывания и некоторые другие. Работа расширения основана на фильтрах и под проверкой подразумевается сравнение параметров выполняемого действия с теми, что описаны фильтрами. Сравнение выполняется поочерёдно со всеми доступными фильтрами.
Изначально расширение добавляет 12 технических прав. В версии AbuseFilter для Фэндома используется дополнительный, уникальный флаг abusefilter-bypass
, что позволяет обходить срабатывания фильтров. Обходить фильтры могут только SOAP, помощники и сотрудники ФЭНДОМА, однако в теории любой фильтр можно настроить на игнорирование любых других дополнительных групп прав, будь то администраторы или Vanguard, например.
Фильтры[]
Фильтр представляет собой описание действия, выполненное с использованием собственного синтаксиса. Список и все инструменты для управления, отладки фильтров расположены на служебной странице Служебная:AbuseFilter. Фильтры предназначены для выделения некоторых нежелательных или даже вредных шаблонов поведения.
Так как обычно каждому поведению соответствует свой фильтр, то, например, если вики ограничивает минимальный размер статьи и предупреждает размещение некой информации (например, спама), то для каждой ситуации создаётся свой фильтр. Это облегчает их разработку и последующую отладку, а также помогает понять причины срабатывания в той или иной спорной ситуации. У каждого фильтра присутствует собственный числовой идентификатор, который никогда не меняется. По идентификатору можно определить количество уже созданных.
Фильтры могут быть общедоступными (просматривать подробности могут все) и скрытыми (просматривать подробности могут только администраторы или только сотрудники и SOAP). Обычно наиболее «интересные» фильтры скрыты — это могут быть шаблоны поведения вандалов, проверки на мат и тому подобное. Раскрытие алгоритмов в таких случаях опасно тем, что в таком случае возможно понять его работу и в итоге обойти его, зная о методах работы, чем просто выявлять систему вручную по принципу «сработало или не сработало». У каждого фильтра есть собственное название, что используется в журналах и видно при срабатывании, то есть является общедоступным, а также описание (заметка), которое могут просмотреть только те, кто имеют доступ к фильтру.
Фильтры также могут быть включены и отключены в любой момент, но стоит учесть, что фильтры с высокой частотой срабатывания отключаются автоматически в целях безопасности. Фильтр можно и удалить, после чего он отключится, его статус изменится на надпись «Удалён», а в списке он будет помечен светло-серым цветом. Такие фильтры по умолчанию не показываются в главном их списке. Удаление (как и другие действия с фильтрами) отмечаются в собственном журнале, но не стандартных журналах MediaWiki. Все операции не только журналируются: любые изменения фильтров сохраняются в их собственной истории, где можно увидеть кто, когда и какие правки внёс. Правда, указать и, соответственно, просмотреть причину правки невозможно, равно как и снять снять её пометку «незначительная».
На странице управления фильтром также указывается некоторая статистика относительно его работы (если таковая имеется — было хотя бы одно срабатывание). В статистике показана общее количество срабатваний, а также частота — на скольких процентах последних действий фильтр сработал. Там же показано среднее время его работы, что важно учитывать, так как каждый фильтр замедляет время сохранения правки, загрузки файла и некоторых других действий на вики, даже если делает совсем мало проверок. Информация в общем доступна на главной странице со списком всех фильтров.
Главным в фильтре являются указанные там условия. Часто сначала там задаётся конкретное действие с использованием переменной action. Это может быть: edit
(правка), move
(переименовывание), (на ФЭНДОМЕ не работает — учётную запись можно создать на любой вики), createaccount
(регистрация)delete
(удаление) и upload
(загрузка файлов). Именно это действие будет пытаться отловить расширение. Затем следует указание параметров, так как без них срабатывания посыплются на любую попытку выполнить действие. Это могут параметры субъекта (участника) или объекта (объекта действия; обычно статьи), или самого действия. Параметры представлены внушительным списком переменных, через которые можно получить, например, имя участника, дату его регистрации, текст страницы, последние десять её редакторов и так далее.
К данным возможно применять функции. Так, функция ccnorm
стандартизирует все символы, и слово «Ƒα₦ðøᗰ» превратится в «FANDOM», а функция lcase
меняет регистр всех букв на нижний, и текст «Wikia, Inc.» преобразуется в «wikia, inc.» Функции оказывают существенную помощь, помогая не только противодействовать незаметным подменам букв в словах с целью обхода фильтров, но и обнаружить само нарушение. К примеру, функция ip_in_range
проверит, входит ли IP-адрес анонимного участника в указанный диапазон адресов.
В синтаксисе фильтров представлены три группы операторов или небольших команд:
- Арифметические операторы: «+» (сложение), «-» (вычитание), «*» (умножение), «/» (деление), «%» (взятие остатка от деления), «**» (возведение в степень). Используются реже других. Стоит помнить, что «+» также предназначен для объединения или конкатенации строк.
- Операторы сравнения: «==» (равенство), «!=» (неравенство), «<» (меньше), «>» (больше), «<=» (меньше или равно), «>=» (больше или равно).
- Логические операторы, что используются чаще всего: «&» (и), «!» (нет), "|" (или) и «^» (взаимоисключающее или).
Операции сравнения помогают группировать множество условий вместе, в одном фильтре, начиная от простого объединения двух элементов:
action = 'edit' & user_age < 608000
…и заканчивая куда более сложными конструкциями с ветвлениями[2]:
action == 'edit' & (user_editcount <= 20 | user_age <= 1209600) & (article_namespace == 0 | article_namespace == 14) & removed_lines rlike '^\[\[([a-z]{2,3}|Категория):.*\]\] *$' & strpos(added_lines, removed_lines) == 0 &( add := substr(added_lines, length(removed_lines)); substr(new_wikitext, length(new_wikitext)+1-length(add)) + '\n' == add &! contains_any(add,'{{','[[') )
Технически в одном фильтре не может быть более 1 000 условий (количество вызовов операторов и функций) единовременно, но такие большие фильтры обычно не встречаются.
Отладка[]
Так как фильтры могут повлияют на деятельность каждого участника википроекта, то важно заниматься тестированием их работы, отладкой некорректно работающих. К сожалению, инструменты тестирования в версии фильтра злоупотреблений, что использует ФЭНДОМ, работают только на фильтрах, проверяющих правки. Остальные фильтры тестировать нужно вручную. Для проверки же наиболее используемых фильтров правок служат три инструмента.
Первый инструмент называется «Пакетное тестирование». За названием скрывается возможность проверить некий фильтр массово, на 100 уже сделанных правках, отобранных по выбранным критериям. Возможно создать новый фильтр, подгрузить уже существующий по его идентификатору, проверить синтаксис на какие-либо ошибки (это же можно сделать и при создании фильтра). Можно просто взять все последние правки, а можно применить некие критерии: имя участника, дату правки, название страницы. Изначально, показываются правки, где фильтр сработал бы в реальных обстоятельствах, однако можно и показать и те, где фильтр бы спасовал.
Следующий инструмент, «Просмотр отдельных изменений», позволяет просмотреть переменные (параметры действий и так далее), созданные фильтром злоупотреблений для отдельной правки, после чего проверить переменные в фильтре. Инструмент в чём-то схож с предыдущим, но предназначен не для массовой проверки, а наоборот, для точечной, тем самым позволяя максимально точно настроить сложный фильтр. Получить доступ к переменным можно и другим путём — через журнал злоупотреблений, правда там будут только те правки, где фильтры сработали, а не любые с вики.
Последний инструмент зовётся «Средствами отладки», и отсюда можно провести всё ту же проверку синтаксиса фильтра. Помимо этого, здесь находится неработающее средство, что позволяет вернуть участнику статус автоподтверждённого, если таковой был снят фильтром (на ФЭНДОМЕ это невозможно). Вероятно, этот инструмент используется куда реже, чем предыдущие два, так как он не содержит каких-то действительно нужных средств, каковых не было бы в ранее описанных.
Действия[]
В случае совпадения указанных условий и действий, фильтр способен автоматически принять в отношении участника некоторые меры.
Прежде всего, любое срабатывание в обязательном порядке сохраняется в журнале злоупотреблений (не путать с журналом изменения фильтров). Помимо этого, на странице управления фильтра можно указать дополнительные меры, которые можно весьма условно разделить на две группы. Первая группа обозначает меры, которые влияют на другие или выполняют предупреждающую функцию:
- «сужение» — можно ограничить действий на некий промежуток времени, только по истечению которого будут приняты остальные меры;
- предупреждение участника выбираемым и настраиваемым текстом (по умолчанию это MediaWiki:Abusefilter-warning, который редактировать нельзя). В тексте обязательно указывается название сработавшего фильтра.
- к действию участника может быть прикреплена метка или метки (найти можно на странице Служебная:Tags). Метки видны редакторам на странице свежих правок. Таким образом, можно привлечь их внимание к некоторым действиям.
Следующие группа включает в себя меры, которые напрямую ограничивают поведение участника и поэтому потенциально опасны при неправильной настройке фильтра:
- Отклонение выполняемого участником действия. Если выбрано предупреждение, то сначала оно будет показано, а отклонение сработает только при игнорирование оного.
Снятие с участника статуса автоподтверждённого(не работает на ФЭНДОМЕ).- Блокировка участника, в том числе блокировка диапазона IP (с суффиксом \16), с которого он работает.
Журнал злоупотреблений[]
Существует особый журнал фильтра, куда записываются все срабатывания всех фильтров. Эта страница не включена в список стандартных журналов и расположена по отдельному адресу Служебная:AbuseLog. Записи добавляются в формате:
16:32, 9 мая, 2018 Asasyl (Стена обсуждения | вклад | заблокировать) вызвал срабатывание фильтра злоупотреблений, выполнив действие «edit» на странице Обсуждение:Fandom Staff/@comment-Asasyl-20180509133230. Предпринятые меры: Предупреждение; Описание фильтра: Фильтр мата
Здесь указано: имя участника, действие (здесь: правка), объект действия (здесь: страница), принятые меры (журналирование не указываются), а также название самого фильтра.
Администраторы и представители глобальных групп могут видеть дополнительные ссылки у каждой правки. Перейдя по ней, они, как и в случае с инструментом «Просмотр отдельных изменений», смогут увидеть все переменные с их конкретными значениями.
Использование[]
Расширение подключается только для крупных или средних вики (например, для англоязычной Вукипедии), в случаях, когда википроект часто подвергается атакам вандалов. На Фэндоме расширение можно подключить в нескольких вариантах доступа: только для сотрудников и SOAP или также и для локальных администраторов. Как правило, в большинстве случаев применяется первая опция. Впрочем, по факту расширение можно использовать и для других целей — например, для запрета простановки некоторых шаблонов неадминистраторам.
Интересные факты[]
- Так как специальный аккаунт расширения совершает только блокировки, он не имеет вклада на вики. Однако единственная правка, совершенная этим аккаунтом, является комментарием на польской Don't Starve Wiki в 2016 году. Примечательно, что комментарий осмысленный, как будто его писал реальный человек.
Примечания[]
Устройство и технология | |
---|---|
MediaWiki | † EmailUser • Вклад • Регистрация • Вход в аккаунт • Служебная • Пространства имён • Патрулирование • Переименование • Удаление / Восстановление / Массовое удаление • Защита |
Расширения | † Автоматическое приветствие • Contact • ParserFunctions • Phalanx • † Автоматическое принятие • Активность участника • Глобальное навигационное меню • Обсуждения • Проверка IP • Кабинет администратора • Конструктор тем • Фильтр злоупотреблений • † Опрос • Комментарии • † Чат • Форум († новый • классический • архаичный) • Блог • † Категории-галереи • Стены обсуждений (Стеночат • Стенофорум) • Европа • Обязательная регистрация • † Новые галереи • † Карты • † Списки TOP-10 • Достижения |
Боты | Программное обеспечение • AutoWikiBrowser • Pywikibot |