2016-02-09 3 views
0

Я пытаюсь написать немного бота для редактирования страниц mw в течение нескольких часов и не может показаться правильным. На этом этапе я даже не уверен, проблема в моем коде или я неправильно понял этот процесс. Я не буду публиковать свой код - только процесс. Скажите, пожалуйста, если я получил хотя бы это право! (Это Mediawiki 1,19 кстати)Редактирование ботов с помощью API MediaWiki

  1. Войти с логином и паролем:

    POST: действие = Логин, lgname = XXX, lgpassword = XXX

  2. Первый Войти терпит неудачу с:

    result = NeedToken, token = XXX

  3. Извлечь файл cookie из первого ответа и не забудьте отправить его со всеми последующими запросами:

    /^ Set- (Cookie: \ ш + _SESSION = [^;] +)/

  4. Войти снова, но на этот раз с токена и печенья заголовка:

    POST: действие = Войти, lgname = XXX, lgpassword = XXX, XXX lgtoken =

  5. Запросили редактировать токен:

    POST: действие = запроса, проп = Информация, intoken = редактировать названия = XXX

  6. Извлечение editToken и редактировать с:

    ПОСТ: действие = редактировать, личинка = 1, название = XXX, md5 = md5 (содержание), текст = содержание, маркер = editToken

Редактирование завершается успешно, но по какой-либо причине это анонимное редактирование o_O

ответ

0

Кажется, моей обработки файлов cookie было недостаточно. Я не понимал, что мне нужно записывать ВСЕ файлы cookie, а не только файлы cookie сеанса. Теперь все хорошо.

+0

Возможно, вы должны использовать надлежащую библиотеку запросов HTTP, которая может обрабатывать файлы cookie для вас. Более новые версии MediaWiki потребуют, чтобы боты понимали заголовки Set-Cookie, которые удаляют файлы cookie. – Tgr

+0

Я не мог найти библиотеку PHP, которая мне понравилась, поэтому я решил написать свою собственную - специфичную для проекта - библиотеку с нуля. Это может быть хорошей идеей превратить библиотеку в универсальную. Если я это сделаю, я обязательно последую вашим советам! Я мог бы переключиться на JavaScript и [nodemw] (https://github.com/macbre/nodemw), хотя ... –

+0

Если вы используете завиток (который, вероятно, вам следует использовать при использовании PHP), просто установите оба параметра 'CURLOPT_COOKIEJAR' и 'CURLOPT_COOKIEFILE', и это позаботится обо всем для вас. – Tgr

Смежные вопросы