Получить http код ответа на URL, который с именем пользователя пароль - PullRequest
0 голосов
/ 16 марта 2020

Я хочу получить http ответный код URL-адреса https://example.com/xyz Но для доступа к этому URL-адресу я должен сначала передать пароль пользователя на https://example.com

Я попытался запустить

#!/bin/sh
curl -u username:password https://example.com

curl -s -o /dev/null -w "{http_code}" https://example.com/xyz

Но я получаю 401 несанкционированный доступ

1 Ответ

0 голосов
/ 16 марта 2020

Без дополнительной информации и знаний о веб-странице, сервисе и т. Д. c. может быть невозможно дать полный и / или правильный ответ. Однако, поскольку я сталкивался с подобными вопросами в прошлом, я приведу здесь несколько советов.

Согласно вашему очень короткому описанию, я предполагаю, что такие команды, как

curl --silent -u "${USERNAME}:${PASSWORD}" "https://example.com/xyz" --output /dev/null --write-out "{http_code}\n" 
curl --silent "https://${USERNAME}:${PASSWORD}@example.com/xyz" --output /dev/null --write-out "{http_code}\n" 

будут не работать правильно, верно?

В зависимости от страницы и службы Может понадобиться сохранить сеанс, сохранить идентификатор или токен после входа в систему и использовать его в дальнейшем. Т.е. для службы, которую я использовал

curl -u "${USERNAME}:${PASSWORD}" -H 'Connection: keep-alive' -D - "https://example.com" |  grep "ID=[a-z0-9]*\|TOKEN = '"

, поэтому я позже "повторно использовал" ID и TOKEN, чем таким образом, как

curl 'https://example.com/xyz'
-H 'Cookie: ID=${ID}'
-H 'Origin: https://example.com'
-H 'Accept-Encoding: gzip, deflate'
-H 'Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4'
-H 'X-CSRF: ${TOKEN}'
-H 'User-Agent: cURL'
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'
-H 'Accept: */*'
-H 'Referer: https://example.com/xyz'
-H 'X-Requested-With: XMLHttpRequest'
-H 'Connection: keep-alive

, и для получения полного содержимого страницы .

...