Я пытаюсь написать немного бота для редактирования страниц mw в течение нескольких часов и не может показаться правильным. На этом этапе я даже не уверен, проблема в моем коде или я неправильно понял этот процесс. Я не буду публиковать свой код - только процесс. Скажите, пожалуйста, если я получил хотя бы это право! (Это Mediawiki 1,19 кстати)Редактирование ботов с помощью API MediaWiki
Войти с логином и паролем:
POST: действие = Логин, lgname = XXX, lgpassword = XXX
Первый Войти терпит неудачу с:
result = NeedToken, token = XXX
Извлечь файл cookie из первого ответа и не забудьте отправить его со всеми последующими запросами:
/^ Set- (Cookie: \ ш + _SESSION = [^;] +)/
Войти снова, но на этот раз с токена и печенья заголовка:
POST: действие = Войти, lgname = XXX, lgpassword = XXX, XXX lgtoken =
Запросили редактировать токен:
POST: действие = запроса, проп = Информация, intoken = редактировать названия = XXX
Извлечение editToken и редактировать с:
ПОСТ: действие = редактировать, личинка = 1, название = XXX, md5 = md5 (содержание), текст = содержание, маркер = editToken
Редактирование завершается успешно, но по какой-либо причине это анонимное редактирование o_O
Возможно, вы должны использовать надлежащую библиотеку запросов HTTP, которая может обрабатывать файлы cookie для вас. Более новые версии MediaWiki потребуют, чтобы боты понимали заголовки Set-Cookie, которые удаляют файлы cookie. – Tgr
Я не мог найти библиотеку PHP, которая мне понравилась, поэтому я решил написать свою собственную - специфичную для проекта - библиотеку с нуля. Это может быть хорошей идеей превратить библиотеку в универсальную. Если я это сделаю, я обязательно последую вашим советам! Я мог бы переключиться на JavaScript и [nodemw] (https://github.com/macbre/nodemw), хотя ... –
Если вы используете завиток (который, вероятно, вам следует использовать при использовании PHP), просто установите оба параметра 'CURLOPT_COOKIEJAR' и 'CURLOPT_COOKIEFILE', и это позаботится обо всем для вас. – Tgr