Minecraft Wiki
Advertisement

Участник:Robot Werther/Заголовок В разное время для JARVISTheBot используется различное программное обеспечение. Основным ПО бота является Pywikibot, но параллельно с ним используются и иные программы.

Pywikibot

Основная статья: mw:Manual:Pywikibot

Основное программное обеспечение бота, работающее на языке программирования Python 2 (с третьей версией испытания проводились очень давно и безуспешно). Представляет собой полноценную систему бота с возможностью написания собственных программ на её основе. В ходе работы неоднократно использовались сценарии, написанные вручную; в частности, с их помощью были залиты модули для обновлённой системы спрайтов. Исторически является первым ПО, используемым для JARVISTheBot; эксплуатируется с 2014 года, с довольно редкими обновлениями.

Werther

Проект вручную созданного робота общего назначения, для которого предполагалось реализовать уникальную архитектуру: программа-ядро, написанная на языке Rust (в начальном варианте — C), осуществляет непосредственную работу с вики-проектами, принимая запросы от периферийных программ через D-Bus. Теоретически это позволило бы использовать Werther в любой программе, повышая его универсальность и не ограничивая сценарии определёнными языками программирования. ПО названо в честь персонажа советского фильма «Гостья из будущего» — робота Вертера — и является противовесом остальным наименованиям, позаимствованным из иностранных произведений (название утверждено в середине 2017 года). Проект отчасти аналогичен замыслам участника AttemptToCallNil.

На данный момент перспективы проекта неясны. С одной стороны, успешная разработка Werther позволила бы реализовать универсальную систему, с которой могут быть интегрированы многие программы, а также подтвердить, расширить и реализовать навыки оператора как программиста. С другой стороны, сейчас не предвидится задач, которые требовали такую платформу, а возможностей Pywikibot и специализированных программ на данный момент достаточно. Кроме того, не стоит забывать и об ещё одной проблеме — банальной лени.

Попутные программы в рамках проекта Werther

Поскольку разработка принципиально нового робота на C (то же верно и для Rust) оценивалась как крайне сложное занятие, предполагалось её вести поэтапно, с созданием попутных программ.

Первым этапом является экспериментальный робот FD2642OBR5 (или просто OBR5; название представляет собой случайную последовательность заглавных букв и цифр), единственной функцией которого является сохранение страницы с конкретно заданным текстом. Он послужил основой для бота, очищающего песочницу по команде с консоли, а также для программы «Прометей».

«Прометей» — экспериментальный робот, предназначенный для упрощения блокировок IP-адресов и IP-диапазонов вандалов, известных в обиходе как «репликаторы» (названы в честь механической расы захватчиков из «Звёздных врат»). Первоначально он поддерживал только один режим блокировки, и для смены параметров необходимо было перекомпилировать всю программу, но с добавлением поддержки опций командной строки стало возможно выбирать два режима: блокировка отдельных адресов и блокировка подсетей. Сам «Прометей» был назван в честь первого боевого корабля землян в «Звёздных вратах», а тот, в свою очередь — в честь персонажа древнегреческой мифологии.

Следующим этапом является отделение ввода от основной программы, своего рода эксперимент по межпроцессному взаимодействию. На практике он был реализован в изначальной версии программы «Дедал».

Дедал

«Дедал» — специализированная программа для оперативной блокировки массовых злоумышленников, таких как IP-адреса, подсети или виртуалы массовых вандалов (в частности вышеупомянутых «репликаторов»). Название программы продолжает традицию «Прометея»: в «Звёздных вратах» «Дедал» — боевой корабль, превосходящий «Прометей» по боевым возможностям (назван в честь легендарного мастера из греческой мифологии). Точно так же и новая программа превосходит предшественника в плане функционала.

Первая версия «Дедала» написана на C с использованием тех же библиотек, что и «Прометей», но у неё есть несколько существенных отличий:

  1. возможность настройки параметров блокировки во время работы. Отсюда также вытекает поддержка команд («Прометей» позволяет вводить только цели блокировки, а режимы настраивались с помощью аргументов, передаваемых при запуске).
  2. разделение на две части: одна отвечала за интерфейс (высокий уровень), другая за непосредственную работу с вики-проектом (низкий уровень). Кроме того, был создан заголовочный файл. Это всё реализует отделение интерфейса от реализации («Прометей» же является монолитной программой; с другой стороны, для «Дедала» это мало отражается на процессе сборки, так как при изменении любого файла должна быть перекомпилирована вся программа);
  3. отделение ввода от программы через FIFO-канал, на который и посылаются команды. С одной стороны, это позволяет создать примитивное подобие сценариев (например, для настройки параметров под определённый режим, или блокировки по списку — сам «Дедал» поддерживал только одиночную блокировку). Но с другой стороны, это позволяет запускать только один экземпляр «Дедала», в отличие от «Прометея».

Предполагалась разработка графической версии «Дедала» на основе GTK+ (при сохранении языка программирования), при этом библиотеки связи и разбора JSON предполагалось заменить на аналогичные из набора GNU. На данный момент разработка графического «Дедала» заморожена (готова только разметка основного окна).

На настоящий момент используется версия «Дедала» на языке Python 3, которая заменяет версию на C. Для HTTP-запросов используется пакет Requests. Таким образом, проект «Дедал» уже не является частью проекта Werther и продолжает самостоятельное развитие.

Другое

Используемые
  • CarpetBomber — сценарий для ускоренного удаления страниц. Использует Python 3 и пакет Requests, поддерживает несколько потоков (каждый с собственным сеансом связи). Работает намного быстрее аналогичного сценария, встроенного в pywikibot, однако последний всё же используется для создания списков удаляемых страниц.
  • Voyager — сценарий для сохранения списка заблокированных открытых прокси-серверов на русскоязычной Википедии. Написан на том же языке и с использованием того же пакета, что «Дедал» и CarpetBomber. Использовался один раз, 7 декабря 2018 года, и сохранил более 1,8 млн адресов в текстовый файл размером 26,2 Мбайт. Фактически программа Voyager используется анонимно, так как учётная запись бота на Википедии не зарегистрирована. Назван в честь сериала Star Trek: Voyager.
Бывшие в использовании
  • AutoWikiBrowser — предназначено для работы на Windows (попытки применения на Linux через Mono не увенчались успехом). Использовался только один раз для устранения использований удалявшегося шаблона {{Код}}. На данный момент вероятность применения оценивается как крайне низкая.
  • Java Wiki Bot Framework — библиотека для разработки бота на Java. Временно использовалась для экспериментов. На данный момент использование этой библиотеки не планируется, однако не исключено, что она может лечь в основу проекта робота для работы на платформе Android.
Нереализованные
  • Wraith — проект робота общего назначения с ядром, написанным на языке Perl, задумывавшийся как «младший брат» Werther. На данный момент разработка не планируется. Назван в честь расы из мира «Звёздных врат».
  • Dakara — система автоматической блокировки IP-адресов, соответствующих открытым прокси-серверам. На данный момент целесообразность этой системы под вопросом (блокировать прокси-сервера по фиксированному списку можно существующими программами, а сам список можно составить программами вроде Voyager). Названа в честь планеты Дакара из «Звёздных врат», где находилось устройство, которое помогло раз и навсегда уничтожить репликаторов (отсылка к частым вандальным атакам с использованием прокси и виртуалов, прозванным «нашествием репликаторов» в честь механической расы из той же вселенной).

Участник:Robot Werther/Навигация

Advertisement