Хочу немного автоматизировать просмотр форума с помощью wget, но не могу добиться от него авторизации на форуме. Пытаюсь делать так (в точности по документации):
Если я правильно понимаю, в целях безопасности во всех формах присутствует дополнительный параметр, типа:
<input type="hidden" name="auth_key" value="тут фигня всякая нужная" />
Чтоб нельзя было JS'ом на чужом сайте делать посты от лица пользователя. XSRF это, кажется, называется?
Не, фигню сморозил :)
URL неправильный. Не unixforum.org, а http://unixforum.org/index.php?act=Login&CODE=01. Не знаю, что такое CODE, может тоже не нужен.
CODE=01 обязательно, если надо войти на форум.
02 - форма входа, 03 - разлогиниться, 04-06 - всякие операции с куками. Если CODE пустой - идет редирект на форму входа.
auth_key, если я правильно помню, md5 пароля. Или md5 сессии. Если первое - при логине он залезет в куки и вводить его будет не обязательно, если же второе - в принципе о нем можно забыть, влияет только на состояние прочитанных постов и тем.
Если в Linux не существует решения вашей проблемы... То у вас неправильная проблема.
Не, фигню сморозил
URL неправильный. Не unixforum.org, а http://unixforum.org/index.php?act=Login&CODE=01. Не знаю, что такое CODE, может тоже не нужен.
Это я здесь написал с неправильнм. Пробовал с правильным. Но на кпк. Сейчас проверил на десктопе -- работает. Видимо, на n810 wget какой-то неправильный. А жаль... Именно там оно мне и нужно.
Видимо, на n810 wget какой-то неправильный. А жаль... Именно там оно мне и нужно.
А curl там есть? У меня есть набор функций для работы с форумом, работающий через curl (раньше юзал wget, но потом переписал на curl). Может, curl там "правильный"?
Вот фрагмент, используемый для логина:
INDEX="http://unixforum.org/index.php"
getpage() {
local u="$1"
shift
curl -c mod.coo -b mod.coo -s "$@" "$INDEX?$u" | enconv | sed 's/; charset=windows-1251/; charset=utf-8/'
}
post() {
local u="$1"
shift
local first=true
for i in "$@"
do
if [ -n "$first" ]
then
first=
set -- -F "$i"
else
set -- "$@" -F "$i"
fi
done
getpage "$u" "$@"
}
login() {
local LOGIN="$1" PASS="$2"
rm -f mod.coo #важно!
post 'act=Login&CODE=01&CookieDate=1' "UserName=$LOGIN" "PassWord=$PASS" > login.html
}
Это я здесь написал с неправильнм. Пробовал с правильным. Но на кпк. Сейчас проверил на десктопе -- работает. Видимо, на n810 wget какой-то неправильный. А жаль... Именно там оно мне и нужно.
а файл с куками у него есть возможность [пере]записать в текущем каталоге?
Всё проверял по несколько раз: и результат записи файла cookies, и результаты всех команд, и задаваемые им опции и урлы. И ни разу ничего не работало как надо. А сейчас решил на всякий случай проверить ещё раз -- и вдруг заработало. Перед этим делал apt-get update, но wget, насколько помню, не обновлял. Хотя кто знает, может быть, "на автомате"?..
Что это было, не понял, но теперь это уже не столь важно. Спасибо всем за участие.
Похоже, wget я таки не обновлял. Он тут вообще не виноват. Я почему-то (сам не знаю, почему) проверял правильность результата браузером. Правильный результат возникал (это я уже потом понял) когда страница сохранялась под другим именем. Вы уже догадались? (: Браузер закешировал в памяти результат рендеринга для более быстрого отображения!!! Неправильным на самом деле был только самый первый результат, когда я, видимо, допустил какую-то опечатку. Когда понял, десять минут сам с себя смеялся.
Браузер закешировал в памяти результат рендеринга для более быстрого отображения!!! Неправильным на самом деле был только самый первый результат, когда я, видимо, допустил какую-то опечатку. Когда понял, десять минут сам с себя смеялся.
:)
я с самого начала темы выискивал у вас опечатку, и не мог её найти...
Браузер закешировал в памяти результат рендеринга для более быстрого отображения!!! Неправильным на самом деле был только самый первый результат, когда я, видимо, допустил какую-то опечатку. Когда понял, десять минут сам с себя смеялся.
я с самого начала темы выискивал у вас опечатку, и не мог её найти...
Видимо, я её исправил до того, как копировать команды сюда -- и только после того, как исправление опечатки не дало результата, и стал писать на форум.