- Goodreads требует двух вещей при входе в систему: во-первых, если у вас есть идентификатор сеанса, сохраненный в cookie, и во-вторых, что у вас есть случайное сгенерированное число.Вы можете получить их при первом посещении страницы входа без входа в систему: она установит cookie-файл с идентификатором сеанса, а форма будет содержать скрытую форму ввода (т.е.) с именем «n» и значением числа.Сохраните их и передайте в качестве файла cookie и значения формы при входе в систему.
Несколько замечаний о том, как я это выяснил:
Первое, что вам нужно понятьв том, что вы пытаетесь воссоздать те же самые запросы, которые ваш браузер делает с Jsoup.Итак, чтобы проверить, будет ли работать то, что у вас есть сейчас, вы можете попытаться воссоздать ту же самую ситуацию с вашим браузером.
Чтобы воссоздать ваш код, я зашел на страницу входа, затем удалил всемои файлы cookie Goodreads (поскольку вы также не отправляете файлы cookie, когда отправляете запрос на вход в систему), и попытались выполнить вход, передав только значения из имени пользователя и пароля.Это дало ошибку, что моя сессия вышла из строя.Когда я сначала загрузил страницу входа, а затем удалил все файлы cookie , за исключением идентификатора сеанса, и не удалил значение формы "n", я смог успешно войти в систему.Поэтому вы хотите сначала сделать общий запрос GET для страницы входа, получить полученный там cookie-файл идентификатора сеанса и значение скрытой формы и передать его вместе с запросом POST.
Может случиться так, что API изменился или что есть только несколько способов.В любом случае, с помощью Connection.Method.POST все будет в порядке.
Да, они относятся к именам полей ввода.Это должен быть идентификатор, однако, так как имя использовалось в прошлом, и не все версии всех браузеров поддерживали передачу идентификаторов в качестве данных, большинство веб-сайтов просто добавляют оба.Либо должно быть в порядке.
Если вы посмотрите на исходный код знака в форме, вы увидите, что атрибут «method» элемента формы действительно является знаком на самой странице, вот где он отправляет запрос.
PS.В качестве общего совета вы можете использовать расширение Firefox «Tamper Data» для удаления данных формы или даже файлов cookie (хотя для этого есть более простые расширения).