Чтение с защищенной страницы в MediaWiki с пользователем бота - PullRequest
0 голосов
/ 02 июня 2019

Используя пользователя с правами администратора, я создал выделенного пользователя для владения ботом; Я добавил этого бота в группу «Боты». С этим пользователем я вошел в систему и создал BotPassword для своего приложения и предоставил ему каждое возможное разрешение , которое может иметь бот.

У меня есть следующие параметры конфигурации, определенные в моем LocalSettings.php

$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['bot']['read'] = true;

Из моего приложения я могу успешно войти в систему, используя Login API - после получения токенов:

Вход в систему

{
    "login": {
        "result":"Success",
        "lguserid":11,
        "lgusername":"botuser@example.org"
    }
}

Однако для запроса страницы используются следующие параметры:

ArrayList<BasicNameValuePair> queryParameters = new ArrayList<>();
queryParameters.add(new BasicNameValuePair("action", "query"));
queryParameters.add(new BasicNameValuePair("prop", "revisions"));
queryParameters.add(new BasicNameValuePair("rvprop", "content"));
queryParameters.add(new BasicNameValuePair("format", "json"));
queryParameters.add(new BasicNameValuePair("formatversion", "2"));
queryParameters.add(new BasicNameValuePair("rvslots", "main"));
queryParameters.add(new BasicNameValuePair("titles", pageName));

Я получаю ошибку:

{
    "error": {
        "code":"readapidenied",
        "info":"You need read permission to use this module.",
        "docref":"See https://wiki.example.org/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; for notice of API deprecations and breaking changes."
    }
}

Если я даю глобальные разрешения на чтение в LocalSettings,

$wgGroupPermissions['*']['read'] = true;

Тогда мой бот-пользователь сможет загрузить страницы без ошибок -

<Ч />

Как я могу предоставить разрешения этому боту, чтобы я мог запрашивать содержимое страницы, не получая ошибку readapidenied , сохраняя при этом свою вики закрытую? Является ли учетная запись BotPassword в разных группах по сравнению с основным пользователем? Если так, как я могу изменить группы бота?

Я использую MediaWiki: 1.32.0 на PHP: 7.2.16 и использую ImapAuthorization для входа в систему пользователя.

1 Ответ

1 голос
/ 02 июня 2019

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

...