Ключ API, используемый при входе в систему POST, жестко закодирован в файле config.js
, поэтому вы можете получить его с помощью Regex, например:
curl -s "https://www.carrefour.es/nlogin/resources/config.js?v=v1.0.24" | sed -rn 's/\s+val:\s+\x27(.*)\x27,.*/\1/p'
Но это не очень хорошо, вам будет лучше савтоматизированный инструмент браузера, такой как селен
Существует еще 2 API для вызова логина:
saveResponseID
представляется своего рода идентификатором сеанса, хранящимся на сервере
Сценарий, использующий curl & sed :
USERNAME="your.email@gmail.com"
PASSWORD="test"
CONTEXT=responseId
API_KEY=$(curl -s "https://www.carrefour.es/nlogin/resources/config.js?v=v1.0.24" | sed -rn 's/\s+val:\s+\x27(.*)\x27,.*/\1/p')
curl "https://accounts.eu1.gigya.com/accounts.login?saveResponseID=$CONTEXT" \
--data-urlencode "loginID=$USERNAME" \
--data-urlencode "APIKey=$API_KEY" \
--data-urlencode "password=$PASSWORD" \
-c cookie.txt
curl "https://accounts.eu1.gigya.com/socialize.getSavedResponse?APIKey=$API_KEY&saveResponseID=$CONTEXT" -b cookie.txt
Обратите внимание, что последнему API (тому, который получил ответ) нужен файл cookie, сгенерированный /accounts.login
API
Этот saveResponseID
(контекст), кажется, имеет время жизни около 2 минут.более менее.В вашем случае, если вы использовали то же самое только в socialize.getSavedResponse
, не вызывая accounts.login
, перед этим могут быть объяснены некоторые ошибки запроса.