CURL для доступа к странице, для которой требуется логин с другой страницы
У меня есть 2 страницы: xyz.com/a
и xyz.com/b
. Я могу получить доступ только к xyz.com/b
тогда и только тогда, когда я сначала вхожу в xyz.com/a
. Если вы обращаетесь к xyz.com/b
, не переходя через другой, я просто получаю доступ через отказ в доступе (без переадресации на вход в систему) через браузер. После входа в систему xyz.com/a
я могу получить доступ к другому.
Моя проблема делает это с помощью команды curl. Я могу успешно войти в систему xyz.com/a
с помощью curl, но затем попробуйте xyx.com/b
, и я получаю отказ в доступе.
Я использую следующее:
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
Я пробовал использовать вторую строку с частью пользователя и пароля и без нее, но не работает. Обе страницы используют один и тот же СА, так что это не проблема. Какие-либо предложения? Благодаря
Ответы
Ответ 1
Веб-сайт, вероятно, использует cookie для хранения информации о сеансе. Когда вы запустите
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
выполняется дважды в двух отдельных сеансах. Таким образом, когда выполняется вторая команда, cookie, установленные первой командой, недоступны; так же, как если бы вы вошли на страницу a
в одном сеансе браузера и попытались получить доступ к странице b
в другой.
Что вам нужно сделать, это сохранить файлы cookie, созданные первой командой:
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
а затем снова зачитайте их при запуске второго:
curl --cookie ./somefile https://xyz.com/b
В качестве альтернативы вы можете попробовать загрузить оба файла в одной команде, которые, как я думаю, будут использовать одни и те же файлы cookie.
Ответ 2
Также вы можете войти в систему через браузер и получить команду со всеми заголовками, включая файлы cookie:
Откройте вкладку "Сеть" в Инструментах разработчика, войдите в систему, перейдите на нужную страницу, используйте "Копировать как cURL".
![screenshot]()
Ответ 3
После некоторого googling я нашел это:
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
Не знаю, работает ли это, но может привести вас в правильном направлении.