WikiDer > Справка: Создание бота - Википедия
Это информационная страница. Это не один из Политика или рекомендации Википедии, а скорее намеревается описать некоторые аспекты норм, обычаев, технических особенностей или практик Википедии. Это может отражать разные уровни консенсус и проверка. |
Роботы или же боты - это автоматические процессы, которые взаимодействуют с Википедией (и другими проектами Викимедиа), как если бы они были редакторами-людьми. На этой странице делается попытка объяснить, как разработать бота для использования в проектах Викимедиа, и большая часть этого может быть перенесена на другие вики, основанные на MediaWiki. Объяснение предназначено в основном для тех, кто имеет некоторый опыт программирования, но не знает, как применить эти знания для создания бота из Википедии.
Зачем мне создавать бота?
Боты могут автоматизировать задачи и выполнять их намного быстрее, чем люди. Если у вас есть простая задача, которую нужно выполнять много раз (например, добавление шаблон ко всем страницам в категории с 1000 страницами), то эта задача лучше подходит для бота, чем для человека.
Рекомендации перед созданием бота
Часто гораздо проще запросить задание у существующего бота. Если у вас только периодические запросы или вам неудобно программировать, это обычно лучшее решение. Эти запросы можно сделать на Википедия: запросы ботов. Кроме того, есть ряд инструментов, доступных каждому. Большинство из них представляют собой усовершенствованные веб-браузеры со специфическими для Mediawiki функциями. Самый популярный из них - AutoWikiBrowser (AWB), браузер, специально разработанный для помощи в редактировании Википедии и других проектов Викимедиа. Наиболее полный список инструментов можно найти на Википедия: Инструменты / Инструменты редактирования. Инструменты, такие как AWB, часто можно использовать с небольшим пониманием программирования или без него.
Если вы решите, что вам нужен собственный бот из-за частости или новизны ваших требований, вам не нужно писать его с нуля. Уже есть количество ботов, работающих в Википедии и многие из этих ботов публикуют свой исходный код, который иногда можно использовать повторно, затратив немного времени на разработку. Также доступен ряд стандартных фреймворков для ботов. Изменение существующего бота или использование фреймворка значительно сокращает время разработки. Кроме того, поскольку эти базы кода широко используются и поддерживаются проектами сообщества, гораздо проще получить ботов на основе этих фреймворков, утвержденных для использования. Самым популярным и распространенным из этих фреймворков является Pywikibot (PWB), бот-фреймворк, написанный на Python. Он тщательно документирован и протестирован, и многие стандартизированные скрипты Pywikibot (инструкции для ботов) уже доступны. Другие примеры бот-фреймворков можно найти ниже. Для некоторых из этих фреймворков, таких как PWB, общее знакомство со скриптами - это все, что необходимо для успешного запуска бота (важно регулярно обновлять эти фреймворки).
Написание нового бота требует значительных навыков программирования. Совершенно новый бот должен пройти серьезное тестирование, прежде чем он будет одобрен для нормальной работы. Чтобы написать успешного бота, решающее значение имеет планирование. Важны следующие соображения:
- Будет ли бот работать вручную или полностью автоматизирован?
- Вы создадите бота в одиночку или с помощью других программистов?
- Будут ли регистрироваться запросы, правки или другие действия бота? Если да, будут ли журналы храниться на локальном носителе или на вики-страницах?
- Будет ли бот работать внутри веб-браузера (например, написанного на Javascript) или это будет отдельная программа?
- Если бот является отдельной программой, будет ли он работать на вашем локальном компьютере или на удаленном сервере, таком как Toolforge?
- Если бот работает на удаленном сервере, смогут ли другие редакторы управлять ботом или запускать его?
Как работает бот из Википедии?
Обзор работы
Как человек-редактор, бот Википедии читает страницы Википедии и вносит изменения там, где, по его мнению, необходимо внести изменения. Разница в том, что, хотя боты быстрее и менее склонны к утомлению, чем люди, они далеко не так умны, как мы. Боты хороши в повторяющихся задачах, которые имеют легко определяемые шаблоны, когда нужно принимать мало решений.
В наиболее типичном случае бот входит в свою учетную запись и запрашивает страницы из Википедии почти так же, как это делает браузер - хотя он не отображает страницу на экране, а работает с ней в памяти, а затем программно проверяет код страницы, чтобы узнать, нужно ли вносить какие-либо изменения. Затем он вносит и отправляет все изменения, для которых он был разработан, опять же почти так же, как и браузер.
Поскольку боты обращаются к страницам так же, как и люди, они могут испытывать те же трудности, что и пользователи-люди. Они могут попасть в конфликт редактирования, иметь тайм-аут страницы или столкнуться с другими неожиданными осложнениями при запросе страниц или внесении изменений. Поскольку объем работы, выполняемой ботом, больше, чем объем работы, выполняемой живым человеком, бот с большей вероятностью столкнется с этими проблемами. Таким образом, при написании бота важно учитывать эти ситуации.
API для ботов
Чтобы внести изменения в страницы Википедии, бот обязательно должен получить страницы из Википедии и отправить изменения обратно. Есть несколько интерфейсы прикладного программирования (API), доступные для этой цели.
- MediaWiki API (
api.php
). Эта библиотека была специально написана для того, чтобы позволить автоматическим процессам, таким как боты, делать запросы и публиковать изменения. Данные возвращаются в JSON формат (см. форматы вывода Больше подробностей).- Положение дел: Встроенная функция MediaWiki, доступная на всех серверах Викимедиа. Другие вики-сайты, не относящиеся к Викимедиа, могут отключать или ограничивать доступ для записи.
- Также есть Песочница API для тех, кто хочет протестировать возможности api.php.
- Special: экспорт может использоваться для получения массового экспорта содержимого страницы в форме XML. Видеть Вручную: от параметров к специальному: экспорт для аргументов;
- Положение дел: Встроенная функция MediaWiki, доступная на всех серверах Викимедиа.
- Обработка необработанной (Wikitext) страницы: отправка
действие = сырье
илидействие = сырые и шаблоны = развернуть
Запрос GET к index.php предоставит необработанный исходный код wikitext страницы. Запрос API сaction = query & prop = revisions & rvprop = content
или жеaction = query & prop = revisions & rvprop = content & rvexpandtemplates = 1
примерно эквивалентен и позволяет получить дополнительную информацию. Например:https://en.wikipedia.org/w/index.php?title=Help:Creating_a_bot&action=raw
- Положение дел: Встроенная функция MediaWiki, доступная на всех серверах Викимедиа.
Некоторые веб-серверы Википедии настроены для предоставления запросов на сжатые (gzip) содержание. Это можно сделать, включив строку «Accept-Encoding: gzip» в заголовок HTTP-запроса; если заголовок HTTP-ответа содержит «Content-Encoding: gzip», документ имеет формат gzip, в противном случае он находится в обычной несжатой форме. Обратите внимание, что это относится к веб-серверу, а не к программному обеспечению MediaWiki. Другие сайты, использующие MediaWiki, могут не иметь этой функции. Если вы используете существующую структуру ботов, она должна обрабатывать такие низкоуровневые операции.
Вход в систему
Одобренные боты должны войти в систему, чтобы вносить изменения. Хотя бот может делать запросы на чтение без входа в систему, боты, завершившие тестирование, должны входить в систему для всех действий. Боты, вошедшие в систему из учетной записи с флагом бота, могут получать больше результатов по запросу из Mediawiki API (api.php). Большинство фреймворков для ботов должны обрабатывать логин и файлы cookie автоматически, но если вы не используете существующий фреймворк, вам нужно будет выполнить следующие действия.
В целях безопасности данные для входа необходимо передавать с помощью HTTP POST метод. Поскольку параметры HTTP GET запросы легко видны в URL, вход через GET отключен.
Чтобы войти в систему с помощью MediaWiki API, необходимы два запроса:
- Запрос 1 - это запрос GET для получения токена входа
- Запрос 2 - это POST для завершения входа в систему
- URL:
https://en.wikipedia.org/w/api.php?action=login&format=xml
- Параметры POST:
lgname = BOTUSERNAME
lgpassword = BOTPASSWORD
lgtoken = ТОКЕН
где TOKEN - токен из предыдущего результата. Файлы cookie HTTP из предыдущего запроса также должны быть переданы со вторым запросом.
Успешная попытка входа в систему приведет к тому, что сервер Викимедиа установит несколько HTTP куки. Бот должен сохранять эти файлы cookie и отправлять их обратно каждый раз, когда делает запрос (это особенно важно для редактирования). В английской Википедии следует использовать следующие файлы cookie: enwikiUserID, enwikiToken, и enwikiUserName. В enwiki_session cookie требуется для фактической отправки редактирования или фиксации изменений, в противном случае MediaWiki: предварительный просмотр сбоя сеанса сообщение об ошибке будет возвращено.
Вход в основную учетную запись с помощью "action = login" устарел и может перестать работать без предупреждения. Чтобы продолжить вход с помощью «action = login», см. Special: BotPasswords.
Редактирование; редактировать токены
Википедия использует систему редактировать токены для внесения правок на страницы Википедии, а также других операций, изменяющих существующий контент, таких как откат. Токен выглядит как длинное шестнадцатеричное число, за которым следует '+ ', например:
- d41d8cd98f00b204e9800998ecf8427e +
Роль токенов редактирования состоит в том, чтобы предотвратить «захват редактирования», когда пользователей обманом заставляют внести изменения, щелкнув одну ссылку.
Процесс редактирования включает два HTTP-запроса. Во-первых, необходимо сделать запрос на токен редактирования. Затем должен быть сделан второй HTTP-запрос, который отправляет новое содержимое страницы вместе с только что полученным токеном редактирования. Невозможно внести изменения в один HTTP-запрос. Маркер редактирования остается неизменным на протяжении всего сеанса входа в систему, поэтому маркер редактирования необходимо получить только один раз, и его можно использовать для всех последующих изменений.
Чтобы получить токен редактирования, выполните следующие действия:
- MediaWiki API (api.php). Сделайте запрос со следующими параметрами (см. mw: API: Edit - Создание и редактирование страниц).
действие = запрос
prop = информация
title = PAGENAME
token = редактировать
Токен будет возвращен в
edittoken
атрибут ответа.
Если токен редактирования, который получает бот, не имеет шестнадцатеричной строки (т.е., токен редактирования - просто '+ '), то, скорее всего, бот не вошел в систему. Это может быть связано с рядом факторов: сбой аутентификации с сервером, разорванное соединение, какой-то тайм-аут или ошибка при сохранении или возврате правильных файлов cookie. Если это не из-за ошибки программирования, просто войдите в систему еще раз, чтобы обновить файлы cookie входа. Боты должен использовать Утвердить расширение редактирования чтобы убедиться, что они вошли в систему.
Редактировать конфликты
Конфликты при редактировании возникают, когда на одной странице предпринимаются несколько пересекающихся попыток редактирования. Почти каждый бот буду в конечном итоге попасть в конфликт редактирования того или иного рода, и он должен включать некоторый механизм для проверки и устранения этих проблем.
Боты, использующие Mediawiki API (api.php), должны получить токен редактирования вместе с отметка времени начала
и "базовая" временная метка последней ревизии, перед загрузка текста страницы при подготовке к редактированию; prop = info | revisions
может использоваться для получения и токена, и содержимого страницы в одном запросе (пример). При отправке редактирования установите отметка времени начала
и basetimestamp
атрибуты и проверьте ответы сервера на наличие ошибок. Подробнее см. mw: API: Edit - Создание и редактирование страниц.
Вообще говоря, если редактирование не удается завершить, бот должен снова проверить страницу, прежде чем пытаться внести новое редактирование, чтобы убедиться, что редактирование по-прежнему актуально. Кроме того, если бот перепроверяет страницу, чтобы повторно отправить изменение, он должен быть осторожен, чтобы избежать любого поведения, которое может привести к бесконечному циклу, и любого поведения, которое может даже напоминать редактировать враждующие.
Обзор процесса разработки бота
На самом деле кодирование или написание бота - это только одна часть разработки бота. Обычно вы должны следовать приведенному ниже циклу разработки, чтобы ваш бот следовал Политика Википедии в отношении ботов. Несоблюдение политики может привести к тому, что ваш бот не будет одобрен или заблокирован для редактирования Википедии.
Идея
- Первой задачей при создании бота из Википедии является определение требований или разработка идеи. Если вы не знаете, для чего писать бота, вы можете почерпнуть идеи на запросы на работу, которую должен выполнить бот.
- Убедитесь, что существующий бот еще не делает то, что, по вашему мнению, должен делать ваш бот. Чтобы узнать, какие задачи уже выполняет бот, см. список действующих ботов.
Технические характеристики
- Технические характеристики это задача точного описания программного обеспечения, которое будет написано, возможно, в строгой форме. Вы должны составить подробное предложение того, что вы хотите от него делать. Попробуйте обсудить это предложение с некоторыми редакторами и доработать его на основе отзывов. Даже отличную идею можно улучшить, включив идеи других редакторов.
- В самом простом виде указанный вами бот должен соответствовать следующим критериям:
- Бот безвреден (он не должен вносить правки, которые могут нарушить нормальную работу энциклопедии)
- Бот полезен (он предоставляет полезные услуги более эффективно, чем обычный редактор)
- Бот не тратит зря ресурсы сервера.
Архитектура программного обеспечения
- Подумать о как вы можете создать его, а также какие языки программирования и инструменты вы бы использовали. Архитектура заботится о том, чтобы система программного обеспечения соответствовала требованиям продукта, а также о том, чтобы удовлетворить будущие требования. Некоторые языки программирования лучше подходят для одних задач, чем другие, подробнее см. § Языки программирования и библиотеки.
Выполнение
Выполнение (или кодирование) включает превращение дизайна и планирования в код. Это может быть самая очевидная часть работы по разработке программного обеспечения, но не обязательно самая большая часть. На этапе внедрения необходимо:
- Создайте учетную запись для своего бота. Нажмите здесь при входе в систему, чтобы создать учетную запись, привязав ее к вашей. (Если вы не создадите учетную запись бота при входе в систему, она может быть заблокирована как возможная кукла из носка или неавторизованный бот, пока вы не подтвердите право собственности)
- Создайте страницу пользователя для своего бота. Изменения вашего бота не должны производиться под вашей учетной записью. Вашему боту потребуется собственная учетная запись с собственным именем пользователя и паролем.
- Добавьте эту же информацию на страницу пользователя бота. Было бы неплохо добавить ссылку на страницу утверждения (одобренную или нет) для каждой функции.
Тестирование
Хороший способ тестирования вашего бота в процессе разработки - это показать ему изменения (если таковые имеются), которые он внес бы на страницу, а не редактировать живую вики. Некоторые фреймворки для ботов (например, пивикибот) имеют предварительно закодированные методы для отображения различий. Вовремя процесс утверждения, боту, скорее всего, будет предоставлен пробный период (обычно с ограничением количества правок или дней, в течение которых он должен работать), в течение которого он может фактически редактировать, чтобы включить точную настройку и сгладить любые ошибки. По окончании пробного периода, если все прошло по плану, бот должен получить разрешение на полноценную работу.
Документация
Важной (и часто игнорируемой) задачей является документирование внутренний дизайн вашего бота с целью дальнейшего обслуживания и улучшения. Это особенно важно, если вы собираетесь разрешить клонирование своего бота. В идеале вы должны опубликовать исходный код вашего бота на его странице пользователя или в системе контроля версий (см. # Боты с открытым исходным кодом), если вы хотите, чтобы другие могли запускать его клоны. Этот код должен быть хорошо документирован (обычно с использованием комментариев) для простоты использования.
Запросы / жалобы
Вы должны быть готовы ответить на вопросы или возражения относительно вашего бота на своей странице обсуждения пользователя, особенно если он работает в потенциально конфиденциальной области, например добросовестная очистка изображений.
Обслуживание
Поддержание доработка вашего бота для устранения недавно обнаруженных ошибок или новых требований может занять гораздо больше времени, чем первоначальная разработка программного обеспечения. Чтобы упростить обслуживание, документируйте свой код с самого начала.
Основные функциональные изменения одобренных ботов должны быть одобренный.
Общие рекомендации по запуску бота
В дополнение к официальной политике ботов, которая охватывает основные моменты, которые следует учитывать при разработке вашего бота, существует ряд более общих рекомендаций, которые следует учитывать при разработке вашего бота.
Лучшие практики ботов
- Установить индивидуальный Пользователь-агент заголовок для вашего бота, согласно Политика Викимедиа в отношении User-Agent. Если вы этого не сделаете, ваш бот может столкнуться с ошибками и может быть заблокирован техническим персоналом на уровне сервера.
- Использовать параметр maxlag с максимальной задержкой 5 секунд. Это позволит боту работать быстро при низкой загрузке сервера и задросселировать его при высокой загрузке сервера.
- Если вы пишете бота в среде, не поддерживающей maxlag, ограничьте общее количество запросов (запросы на чтение и запись вместе) не более 10 в минуту.
- Использовать API всякий раз, когда это возможно, и устанавливайте ограничения запросов на самые большие значения, допускаемые сервером, чтобы минимизировать общее количество запросов, которые должны быть выполнены.
- Запросы на редактирование (запись) дороже по времени сервера, чем запросы на чтение. Будьте легкими в редактировании и создайте свой код так, чтобы редактирование было минимальным.
- Попытайтесь объединить правки. Одна большая правка лучше, чем десять меньших.
- Давать возможность Постоянные HTTP-соединения и сжатие в вашей клиентской библиотеке HTTP, если возможно.
- Не делайте многопоточные запросы. Дождитесь завершения одного запроса сервера, прежде чем начинать другой.
- Отключитесь при получении ошибок от сервера. Такие ошибки, как тайм-ауты squid, часто указывают на большую загрузку сервера. Использовать последовательность увеличивающихся задержек между повторными запросами.
- Использовать утверждение чтобы ваш бот вошел в систему.
- Тщательно проверьте свой код перед выполнением больших автоматических запусков. Индивидуально изучите все правки во время пробных запусков, чтобы убедиться, что они безупречны.
Общие функции ботов, которые вам следует рассмотреть
Ручная помощь
Если ваш бот делает что-либо, что требует суждения или оценки контекста (например, исправляет орфографию), вам следует подумать о том, чтобы сделать своего бота вручную, что означает, что человек проверяет все изменения перед их сохранением. Это значительно снижает скорость работы бота, но также значительно снижает количество ошибок.
Отключение бота
Быстро отключить вашего бота должно быть легко. Если ваш бот выйдет из строя, вы несете ответственность за его устранение! Вы можете заставить бота отказаться от запуска, если сообщение было оставлено на его странице обсуждения, при условии, что сообщение может быть жалобой на его действия; это можно проверить с помощью API meta = userinfo
запрос (пример). Или у вас может быть страница, которая отключит бота при изменении; это можно проверить, загружая содержимое страницы перед каждым редактированием.
Подпись
Как и человек, если ваш бот вносит изменения на страницу обсуждения в Википедии, он должен подписать свое сообщение четырьмя тильдами (~~~~). Подписи принадлежат Только в пространствах имен обсуждения, за исключением страниц проекта, используемых для обсуждения (например, статьи для удаления).
Флаг бота
Изменения бота будут видны на Special: RecentChanges, если правки не указывают на бота. После того, как бот был одобрен и получил разрешение флага бота, можно добавить «bot-True» к вызову API - см. mw: API: Edit # Parameters чтобы скрыть правки бота в Special: RecentChanges. В Python, используя mwclient или wikitools, затем добавляя Bot = True к команде редактирования / сохранения установит редактирование как редактирование бота - например, PageObject.edit (текст = pagetext, bot = True, summary = pagesummary)
.
Боты с открытым исходным кодом
Многие операторы ботов предпочитают делать свой код открытым, и иногда это может потребоваться до утверждения для особо сложных ботов. Открытие исходного кода кода дает несколько преимуществ:
- Это позволяет другим просматривать ваш код на предмет потенциальных ошибок. Как и в случае с прозой, автору кода часто бывает трудно его адекватно просмотреть.
- Другие могут использовать ваш код для создания собственных ботов. Пользователь, не знакомый с написанием ботов, может использовать ваш код в качестве примера или шаблона для своих собственных ботов.
- Это поощряет хорошие практики безопасности, скорее, чем безопасность через безвестность.
- Если вы откажетесь от проекта, это позволит другим пользователям запускать задачи вашего бота без необходимости писать новый код.
Открытый исходный код, хотя и редко требуется, обычно поощряется в соответствии с открытым и прозрачным характером Википедии.
Перед тем как поделиться кодом, убедитесь, что конфиденциальная информация, такая как пароли, выделена в файл, который не является общедоступным.
Для пользователей, желающих сделать свой код открытым, доступно множество вариантов. Размещение кода на подстранице пользовательского пространства бота может быть затруднительным в обслуживании, если оно не автоматизировано, и приводит к тому, что код становится многократно лицензированным в соответствии с условиями лицензирования Википедии в дополнение к любым другим условиям, которые вы можете указать. Лучшее решение - использовать система контроля версий Такие как SVN, Git, или же Mercurial. В Википедии есть статьи, в которых сравниваются разные опции программного обеспечения и сайты для хостинга кода, многие из которых бесплатны.
Языки программирования и библиотеки
Ботов можно писать практически на любом языке программирования. Выбор языка зависит от опыта и предпочтений автора ботов, а также от наличия библиотек, необходимых для разработки ботов. Следующий список включает некоторые языки, обычно используемые для ботов:
Awk
GNU Awk это простой язык для маленьких и больших ботов, включая OAuth.
- Фреймворк и библиотеки: BotWikiAwk
- Примеры ботов в аккаунте GitHub Пользователь: GreenC в GitHub
Perl
Если вы размещены на веб-сервере, вы можете запустить свою программу и взаимодействовать с ней во время ее работы через Общий интерфейс шлюза из вашего браузера. Если ваш интернет-провайдер предоставляет вам веб-пространство, велики шансы, что у вас есть доступ к сборке Perl на веб-сервере, с которой вы можете запускать свои программы Perl.
Библиотеки:
- MediaWiki :: API - Базовый интерфейс к API, позволяющий скриптам автоматизировать редактирование и извлечение данных с сайтов, управляемых MediaWiki.
- MediaWiki :: Бот - Достаточно полный фреймворк для ботов MediaWiki, написанный на Perl. Предоставляет более высокий уровень абстракции, чем MediaWiki :: API. Плагины предоставляют функции администратора и управляющего. В настоящее время не поддерживается.
PHP
PHP также может использоваться для программирования ботов. Разработчики MediaWiki уже знакомы с PHP, поскольку это язык, на котором написаны MediaWiki и его расширения. PHP - особенно хороший выбор, если вы хотите предоставить своему боту интерфейс на основе веб-форм. Например, предположим, что вы хотите создать бота для переименования категорий. Вы можете создать HTML-форму, в которой вы будете вводить текущее и желаемое названия категории. Когда форма будет отправлена, ваш бот сможет прочитать эти данные, а затем отредактировать все статьи в текущей категории и переместить их в нужную категорию. (Очевидно, что любой бот с интерфейсом формы должен быть каким-то образом защищен от случайных пользователей Интернета.)
В Функции PHP-бота Таблица может дать некоторое представление о возможностях основных фреймворков для ботов.
Ключевые люди[php 1] | Имя | Версия PHP | Последнее обновление | Использует API[php 2] | Соответствует исключению | Функции администратора | Плагины | Репозиторий | Примечания |
---|---|---|---|---|---|---|---|---|---|
Пользователь: Cyberpower678, Пользователь: Addshore, и Пользователь: Jarry1250 | Персиковый | 5.2.1 | 2017 | да | да | да | да | GitHub | Большой фреймворк, который сейчас переписывается. Документации на данный момент нет, так что ткните Пользователь: Cyberpower678 для помощи. |
Пользователь: Addshore | mediawiki-api-base | 5.3–7 | 2018 | да | Нет данных | Нет данных | дополнительные библиотеки | GitHub | Базовая библиотека для взаимодействия с mediawiki api, предоставляет вам способы обработки входа, выхода и обработки токенов, а также простого получения и отправки запросов. |
Пользователь: Addshore | mediawiki-api | 5.3 | 2019 | да | Нет | немного | дополнительные библиотеки | GitHub | Построенный на основе mediawiki-api-base, он добавляет более продвинутые службы для API, такие как RevisionGetter, UserGetter, PageDeleter, RevisionPatroller, RevisionSaver и т. Д. фрагментированная загрузка. |
Пользователь: nzhamstar | Wikimate | 5.3.2 | 2019 | да | Нет | Нет | Нет | GitHub | Поддерживает основные статьи и файлы. Аутентификация, проверка наличия страниц, чтение и редактирование страниц / разделов. Получение информации о файлах, скачивание и закачка файлов. Проверено и работает. Стремится быть простым в использовании. |
Григор Гачев | Apibot | 5.1 | 2015 | да | да | да | да | на вики | Полная поддержка API до MW 1.21, включая постоянные соединения, сжатые файлы xfers, HTTPS, HTTP-аутентификацию, сортировку GET, автоматическое кэширование и использование сайта / пользователя / параминфо, соответствие исключения страниц ботам, около 1000 функций, поддержка БД и т. Д. Легко расширяемая модульная конструкция. UNIX-подобный фреймворк «сборочная линия». AGPL 3.0 или новее. |
Крис Дж. | botclasses.php botclasses.php | 5 | 2020 2019 | да | да | да | Нет | на вики GitHub | Вилка старых классов wikibot.classes (используется ClueBot и SoxBot). Обновлено для изменений API 2010 и 2015 годов. Поддерживает загрузку файлов. |
Python
Библиотеки:
- Pywikibot - Вероятно, наиболее часто используемый бот-фреймворк.
- ceterach - Интерфейс для взаимодействия с MediaWiki
- вики-инструменты- Облегченная платформа для ботов только на Python-2, которая использует API MediaWiki исключительно для получения данных и редактирования, используется и поддерживается Мистер Z-человек (загрузки)
- mwclient—Фреймворк на основе API, поддерживаемый Брайан
- mwparserfromhell - Парсер вики-текста, поддерживаемый Уховертка
- pymediawiki - Обертка API MediaWiki только для чтения на Python, простая в использовании.
MATLAB
- MatWiki - предварительный (по состоянию на февраль 2019 г.) клиент MATLAB R2016b (9.1.x), поддерживающий только логины ботов и семантические запросы #ask.
Microsoft .NET
Microsoft .NET это набор языков, включая C #, C ++ / CLI, Visual Basic .NET, J #, JScript .NET, IronPython, и Windows PowerShell. С помощью Моно проект, .NET-программы также могут работать на Linux, Unix, BSD, Солярис и macOS а также под Windows.
Библиотеки:
- DotNetWikiBot Framework - полнофункциональный клиент API на .NET, что позволяет легко создавать программы и веб-роботов для управления информацией на сайтах, основанных на MediaWiki. Сейчас переведено на несколько языков. Подробная составленная документация доступна на английском языке.
- Библиотека WikiFunctions .NET - В комплекте с AWB, представляет собой библиотеку полезных для ботов вещей, таких как создание списков, загрузка / редактирование статей, подключение к каналу IRC последних изменений и многое другое.
Ява
Библиотеки:
- Java Wiki Bot Framework - Фреймворк для Java-вики-ботов
- вики-Java - Вики-фреймворк Java-ботов, состоящий только из одного файла
- WPCleaner - Библиотека, используемая инструментом WPCleaner
- jwiki - Простая и легкая в использовании среда Java wiki для ботов.
JavaScript
JavaScript это язык сценариев используется в основном на веб-страницах. JavaScript можно использовать для улучшения Википедии, добавляя скрипты в ваш common.js страница.
Библиотеки:
- !! Сильно УСТАРЕЛ А MediaWiki модуль существует для Node.js. Модуль также можно добавить в ваш common.js страница и используется как библиотека для вызовов JS в вики. Он обеспечивает рамки стандартных запросов (например, вход, выход и т. д.), а также общий метод оболочки для MediaWiki API и включает регулирование.
- викиапи - Простой способ доступа к MediaWiki API через JavaScript с помощью простого парсера wikitext, используя модуль CeJS MediaWiki. Видеть Примеры ботов из Википедии на GitHub.
Рубин
Библиотеки:
- MediaWiki :: Задница - Клиент API. Активно поддерживается. Видеть оценка
- mediawiki / ruby / api, Клиент API от Команда разработчиков релизов Викимедиа. Последнее обновление: декабрь 2017 г., больше не поддерживается, но все еще работает.
- Википедия-клиент - Клиент API. Последнее обновление - март 2018 г. Неизвестно, работает ли все еще.
- MediaWiki :: Шлюз - Клиент API. Последнее обновление: январь 2016 г. Протестировано до MediaWiki 1.22, затем было совместимо с вики-сайтами Викимедиа. Неизвестно, работает ли еще.
Common Lisp
- CL-MediaWiki реализует MediaWiki API как Common Lisp упаковка. Планируется использовать JSON как формат данных запроса. Поддерживает расширения maxlag и assert edit.
Haskell
VBScript
VBScript это язык сценариев на основе Visual Basic язык программирования. Для VBScript нет опубликованных бот-фреймворков, но некоторые примеры ботов, которые его используют, можно увидеть ниже:
- Пользователь: Smallman12q / Scripts / cleanuplistingtowiki - Войдите в систему и дайте предварительный просмотр редактирования
- Пользователь: Smallman12q / VBS / Savewatchlist - Войдите, получите необработанный список наблюдения, сохраните в файл, выйдите из системы, закройте IE
- Commons: Пользователь: Smallbot # Sources - Несколько скриптов, показывающих использование VBScript (Javascript, XMLHTTP, MSHTML, XMLDOM, COM) для пакетной загрузки.
Lua
- Во время Ежегодного семинара Lua 2016 г. Джим Картер и Dfavro начал разработку бот-фреймворка Lua для проектов Викимедиа. Пожалуйста, свяжитесь с Джимом Картером на их странице обсуждения, чтобы обсудить разработку.
- mwtest это пример использования Lua для написания викибота, созданного Юзер: Александр Мисель, с простым API.