Не могу получить curl для работы с конкретным сайтом - PullRequest
0 голосов
/ 08 октября 2019

Итак, я недавно установил несколько плагинов для сайтов, где вы можете загружать данные. Хотя один конкретный сайт играет трудно, чтобы получить. Я не могу опубликовать конкретные детали сайта, но я объясню процесс.

Во-первых, этот сайт использует стандарт 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...