Итак, я недавно установил несколько плагинов для сайтов, где вы можете загружать данные. Хотя один конкретный сайт играет трудно, чтобы получить. Я не могу опубликовать конкретные детали сайта, но я объясню процесс.
Во-первых, этот сайт использует стандарт https://website/login.php
, который принимает имя пользователя, пароль и csrf_token, который создается случайным образом. Я запустил логин в Chrome, проверил результат и скопировал его в bash. Затем я добавил -c cookies.txt
, чтобы сохранить cookie для будущего использования, что, кажется, работает нормально. Затем я нажимаю URL, по которому хочу попасть, и он не работает. Таким образом, программно это выглядит следующим образом (скопировано сразу с проверки curl (bash)):
curl -c cookies.txt https://website/login.php \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.
0.3809.132 Safari/537.36' \
-H 'Content-Type: application/json;charset=UTF-8' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Cookie: phpsessid=xxxx'
--data "username=xxx&password=xxx&csrf_token=xxxx" --compressed
Я пропустил несколько заголовков для простоты, но вы поняли идею. Все, что я здесь сделал, это сразу же взял команду inspect и вставил -c cookies.txt
.
. В процессе входа в систему происходит три последовательных вызова. Сначала login.php
, затем index.php
и, наконец, welcome.php
.
Если я сохраню файл cookie, как указано выше, я вижу, что файл прекрасно работает, но если я затем скопирую команду curl для index.php
и welcome.php
с -b cookies.txt
, я не получу абсолютно никакого ответа. Если я использую -L
для отслеживания перенаправлений, я получаю сообщение об ошибке, что сеанс истек, и мне нужно снова войти в систему.
Что раздражает, так это то, что если я использую вызов прямо с сайта, он работаетвесь путь до конца. Единственная проблема здесь заключается в том, что в будущем мне нужно вручную войти на сайт, чтобы это работало, и это то, что я пытаюсь решить.
Я понятия не имею, в чем проблема, но я не могу получить файл cookie, сохраняемый в окне Unix, для эффективного прохождения до следующих двух вызовов URL. Любая помощь будет супер.
PS Я просмотрел несколько онлайн-примеров того, как войти на веб-сайт, используя CURL с файлами cookie, и все они, похоже, ведут по одному и тому же пути. Я также получил точно такой же ответ, когда использовал wget
с опцией --save-cookies
.