- Curl status code linux
- Получение curl для вывода кода состояния HTTP?
- 15 ответов
- Проверка кода ответа сервера и http заголовков
- Что такое код ответа сервера?
- Что такое http заголовки?
- Проверка кода ответа сервера с помощью cURL
- Проверка http заголовков с помощью Curl
- Проверка If-Modified-Since
- Проверка If-None-Match
- Проверка сжатия
- Выводы
Curl status code linux
Unsupported agreement. This version of cURL does not support this protocol.
Initialization code failed
URL format is incorrect
The URL is malformed. The syntax is incorrect.
Request protocol error
Unable to resolve proxy
Unable to resolve proxy. Unable to resolve the given proxy host.
Unable to resolve host address
Unable to resolve host. Unable to resolve the given remote host.
Unable to connect to host
Unable to connect to the host.
Remote server is not available
FTP abnormal server response. cURL cannot parse the data sent by the server.
Access resource error
FTP access was denied. The server refused to log in or could not get the specific resource or directory you want. Most likely
It is possible that you are trying to enter a directory that does not exist on this server.
FTP password error
FTP abnormal PASS reply. cURL could not parse the response sent to the PASS request.
FTP An abnormal PASV response, cURL could not resolve the response sent to the PASV request.
FTP responds to PASV commands
FTP is not normal 227 format. cURL could not parse the 227 lines sent by the server.
FTP cannot connect to the host. The host IP obtained in line 227 could not be parsed.
Set the transfer mode to binary
FTP cannot be set to binary transfer. Unable to change the transfer method to binary.
File transfer is short or larger than expected
Part of the file. Only some files are transferred.
RETR command transfer completed
FTP cannot download/access a given file, and the RETR (or similar) command fails.
Command completed successfully
FTP quote error. The quote command returns an error from the server.
Return to normal
HTTP could not find the page. Could not find the requested URL or return another HTTP 400 or above error.
This return code only appears after the -f/—fail option is used.
Data write failed
Write error. cURL cannot write data to a local file system or similar purpose.
Unable to start upload
FTP cannot be a STOR file. The server rejected the STOR operation for FTP upload.
Read the error. Various types of reading problems.
Memory allocation request failed
Not enough storage. The memory allocation request failed.
The operation timed out. Reach the specified timeout period condition.
FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, please
Try using passive (PASV) transmission instead!
FTP cannot use REST commands. The REST command failed. This command is used to recover FTP transfers.
Request not supported
HTTP range error. The range «command» does not work.
HTTP POST error. An internal POST request generated an error.
SSL/TLS handshake failed
SSL connection error. The SSL handshake failed.
Download cannot be recovered
FTP resume transmission is corrupt. Can’t continue the download that was aborted earlier.
File permission error
The file could not be read. Unable to open file. Permissions issue?
LDAP can be non-binding
LDAP cannot be bound. The LDAP bind operation failed.
LDAP search failed
LDAP search failed.
Function not found
The feature could not be found. Unable to find the necessary LDAP functionality.
Terminated by the callback. The application tells cURL to terminate its operation.
internal error. The function was called by an incorrect parameter.
Interface error. The specified outgoing interface is not available.
Too many redirects
Too many redirects. cURL has reached the maximum limit following the redirect setting
An unknown TELNET option was specified.
TELNET format error
Unsuitable telnet option.
Remote server SSL certificate
The peer’s SSL certificate or SSH MD5 fingerprint is not determined.
The server has no return content
The server has no response and this situation is considered an error here.
Encryption engine not found
The SSL encryption engine was not found.
Set default SSL encryption failed
Unable to set the SSL encryption engine to default.
Unable to send network data
Sending network data failed.
Depletion receiving network data
Failed while receiving network data.
Local client certificate
There is a problem with the local certificate.
Unable to use password
Unable to use the specified SSL password.
Credential cannot be verified
The peer certificate cannot be verified by a known CA certificate.
Unrecognized transfer encoding
Unrecognized transfer encoding.
Invalid LDAP URL
Invalid LDAP URL.
File exceeds maximum size
Exceeded the maximum file size.
The required SSL level of FTP failed.
Rewind operation failed
The rewind required to send this data failed.
SSL engine failed
Initialization of the SSL engine failed.
Server refused to log in
The username, password, or similar information was not accepted and the cURL login failed.
The file was not found on the TFTP server.
There is a problem with the TFTP server permissions.
Exceeding server disk space
The TFTP server has insufficient disk space.
Illegal TFTP operation
Illegal TFTP operation.
ID of unknown TFTP transmission
Unknown TFTP transmission number (ID).
The file already exists
The file already exists (TFTP).
Error TFTP server
No such user (TFTP).
Character conversion failed
Character conversion failed.
Must call a callback
Need character conversion function.
CA certificate authority
There is a problem reading the SSL certificate (path? access rights?).
The reference resource in the URL does not exist.
The resource referenced in the URL does not exist.
Error occurred in SSH session
An unknown error occurred during the SSH session.
Unable to close SSL connection
Failed to close the SSL connection.
Service not prepared
Unable to load CRL file
Unable to load CRL file, missing or malformed (added in version 7.19.0).
Issuer check failed
The check check failed (added in version 7.19.0).
Источник
Получение curl для вывода кода состояния HTTP?
Я использую curl в командной строке Linux для выполнения HTTP-запросов. Тела ответов печатаются в standard out, что нормально, но я не вижу на справочной странице, как заставить curl печатать код состояния HTTP из ответа (404, 403 и т. д.). Такое возможно?
15 ответов
Это должно работать для вас if веб-сервер способен отвечать на запросы головы (это не будет выполнять GET ):
в качестве дополнения, чтобы cURL следовал перенаправлениям (статусы 3xx), добавьте-L.
более конкретный способ печати просто код состояния HTTP-это что-то вроде:
намного проще работать со скриптами, так как не требует никакого парсинга: -)
параметр-I может быть добавлен для повышения производительности загрузки ответа. Этот параметр просто запрашивает состояние / заголовки ответа, без тела ответа загрузки. (%
Если вы хотите увидеть заголовок, а также результат, вы можете использовать опцию verbose:
статус появится в заголовке. Например:
вы можете распечатать код состояния, в дополнение ко всем заголовкам, выполнив следующие действия:
хорошая вещь о -i он работает с -X POST Как хорошо.
если вы хотите записать код состояния HTTP в переменной, но перенаправить содержимое в STDOUT, необходимо создать два stdout. Вы можете сделать это с помощью процесс замещения >() и команда подстановки $().
сначала создайте файловый дескриптор 3 для вывода текущего процесса с exec 3>&1 .
затем используйте керла -o опция для перенаправления содержимого ответа на временный fifo с помощью подстановки команд, и затем в этой подстановке команд перенаправьте выходные данные обратно в текущий файловый дескриптор процесса STDOUT 3 С -o >(cat >&3) .
положить все это вместе в bash 3.2.57(1)-release (стандарт macOS ):
обратите внимание, что это не работает в /bin/sh as SamK отмечено в комментариях ниже.
переопределить вывод curl:
может использоваться с любым типом запроса.
это отправит запрос на url, получит только первую строку ответа, разделит ее на блоки и выберет вторую.
содержит код ответа
код состояния только
все заслуга в этом GIST
для POST запроса сработало следующее:
Это больно curl —fail ограничения. От man curl :
-f, —fail (HTTP) сбой молча (без вывода вообще) на ошибки сервера
но нет способа получить оба ненулевых кода возврата и тело ответа в stdout.
этот функция ведет себя точно так же, как curl , но вернет 127 (код возврата не используется curl ) В случае HTTP кода в диапазоне [400, 600[.
возвращает следующую информацию:
- данные ответа, если какие-либо данные возвращаются API, как ошибка
- код состояния
вот команда curl, использующая GET и это возвращает код HTTP.
пожалуйста, помните, что подход ниже использует HEAD , который быстрее, но он не может хорошо работать с некоторыми веб-менее совместимых серверов HTTP.
используйте следующую команду cURL и передайте ее grep следующим образом:
вот что делает каждый флаг:
- -I : показывать только заголовки ответов
- -s : Silent-не показывать прогресс бар
- -L : за Location: заголовки
запуск из командной строки. Этот curl работает в автоматическом режиме, следует за любыми перенаправлениями, получает HTTP заголовки. grep выведет код состояния HTTP на стандартный вывод.
OP хочет знать код состояния. Часто при загрузке файла вы также Хотите почувствовать его размер, поэтому я использую curl сначала, чтобы показать код состояния и размер файла, а затем отключить подробный и прямой файл в место и имя, которое я хочу:
тогда я жду окончания curl
перед запуском следующей команды. Выше, когда используется в сценарии многих команд, как выше, дает хороший ответ, как:
обратите внимание, что после-o в curl должен следовать полный путь к файлу + имя файла. Это позволяет вам thusly сохранять файлы в разумной структуре имен, когда вы d / l их с curl. Также обратите внимание, что-s и-S, используемые вместе, заставляют замолчать вывод, но показывают ошибки. Обратите внимание также, что-R пытается установить метку времени файла на веб-файл.
мой ответ основан на том, что @pvandenberk первоначально предложил, но кроме того, он фактически сохраняет файл где-то, вместо того, чтобы просто направлять в /dev/null.
Источник
Проверка кода ответа сервера и http заголовков
Когда мы открываем любую веб-страницу нужного нам сайта вместе с HTML кодом страницы сервер передает код статуса запроса и http заголовки. По коду статуса программы могут быстро определить все ли прошло успешно или, например, такой страницы нет на сервере. Заголовки содержат информацию для браузера, которая указывает как нужно обрабатывать страницу и что с ней делать.
Обычным пользователям эта информация ни к чему, но если вы администратор сайта или технический специалист, она может быть для вас очень полезной. В этой статье мы рассмотрим как выполняется проверка кода ответа сервера и http заголовков с помощью утилиты curl.
Что такое код ответа сервера?
Для нормальной работы различных программ, работающих по протоколу HTTP сервер возвращает не только текст страницы, но и трехзначный код, который позволяет определить результат запроса. С помощью этого кода можно не только описать какая ошибка возникла во время обработки, но и перенаправить пользователя на другую страницу, или же сказать, что страница не была изменена. Вот самые распространенные коды ответа сервера:
1xx — информационные:
- 100 — сервер принял первую часть запроса, можно подрожать передачу;
- 101 — нужно изменить протокол работы на более подходящий;
- 102 — на обработку запроса уйдет много времени, используется чтобы браузер не разрывал соединение раньше времени;
2хх — операция успешна:
- 200 — запрос выполнен успешно, отправляется для большинства запрашиваемых страниц;
- 201 — после выполнения запроса был создан ресурс;
- 202 — запрос принят, но еще не обработан;
- 203 — запрос выполнен успешно, но информация для ответа взята из прокси;
- 204 — запрос обработан, но контента для отображения нет;
- 205 — попросить пользователя ввести необходимые данные;
- 206 — запрос обработан, но передана только часть контента;
3xx — перенаправления:
- 300 — есть несколько страниц для этого запроса, например, на нескольких языках;
- 301 — страница навсегда перемещена по новому адресу;
- 302 — документ был временно перемещен;
- 303 — документ необходимо загрузить по указанному адресу с помощью протокола GET;
- 304 — документ не изменился с последнего запроса;
- 305 — нужно использовать прокси;
- 307 — ресурс временно перемещен на новый адрес.
4хх — ошибка в запросе:
- 400 — неверный запрос;
- 401 — необходимо аутентифицироваться;
- 403 — запрос принят, но у вас нет доступа;
- 404 — страница не найдена на сервере;
- 405 — используемый метод нельзя применять на сервере;
- 408 — время ожидания передачи запроса истекло;
- 410 — ресурс полностью удален;
- 411 — нужно указать длину запроса;
- 413 — запрос слишком длинный;
- 414 — URI запроса слишком длинная.
5хх — ошибка сервера:
- 500 — внутренняя ошибка сервера;
- 501 — нужная функция не поддерживается;
- 502 — прокси не может соединиться со шлюзом;
- 503 — сервер не может обрабатывать запросы по техническим причинам;
- 504 — прокси не дождался ответа от сервера;
- 505 — версия протокола HTTP не поддерживается.
Что такое http заголовки?
С помощью http заголовков клиент и сервер обмениваются информацией и командами между собой. Они используются для согласования метода, протокола, кодировки, языка и многих других параметров работы. Рассмотрим основные заголовки, которые будет отправлять сервер:
- Server — имя и версия веб-сервера;
- Date — дата осуществления запроса;
- Content-Type — MIME тип передаваемых данных, например, text/html, тут же задается кодировка;
- Connection — тип соединения, может быть closed — уже закрыто, или keep-alive — открыто для передачи данных;
- Vary — указывает при каких заголовках веб-сервер будет возвращать разные старины для одного URI;
- Set-Cookie — сохранить Cookie информацию для страницы;
- Expires — можно хранить страницу или ресурс в кэше до определенной даты;
- Cache-Control — настройка времени кэширования страницы браузером, а также разрешения на кэширования;
- ETag — содержит контрольную сумму для страницы, применимо для проверки кэша;
- Last-Modified — дата, когда страница последний раз была изменена;
Все это было вступлением, чтобы вы смогли понять что мы дальше собираемся делать, поскольку мы рассмотрим не только то как посмотреть заголовки и ответ сервера, но и то какими они должны быть для вашего сайта.
Проверка кода ответа сервера с помощью cURL
Чтобы увидеть только код ответа страницы достаточно выполнить такую команду:
curl -s -o /dev/null -w «%
Или, если хотите, чтобы ответ выглядел более естественно:
curl -I https://losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2
Страницы вернули 200, все в порядке. Но отправляет ли сервер редирект для нужных нам страниц? Если ваш сайт работает на https, то все запросы http должны перекидываться на https, также для любого сайта, все запросы на www домен должны перенаправляться на основной, или наоборот. Запросы на ip сайта тоже в идеале должны отправляться на основной домен. Проверка http ответа:
curl -I http://losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2
curl -I https://www.losst.ru 2>/dev/null | head -n 1 | cut -d$’ ‘ -f2
Все работает так, как нужно. Но смотреть код ответа сервера вряд ли понадобиться, намного интереснее проверка http статусов.
Проверка http заголовков с помощью Curl
Для проверки заголовков мы тоже можем использовать утилиту curl. Чтобы вывести заголовки страницы запустите ее с опцией -I:
curl -I https://losst.ru
Здесь отображается код ответа сервера, а также принятые http заголовки. Из них мы можем сделать такие выводы:
- Страница сгенерирована в nginx 1.10.2;
- Это обычная html страница (text/html);
- Размер страницы 102452 байт или 100 кб;
- Страница последний раз изменялась 18:13:12 (last_modified) это очень важный параметр для поисковых систем;
- Сервер будет выдавать разные версии страниц при изменении поля Accept-Encoding (Vary);
- Страница может храниться в любом кэше (public) на протяжении часа (expires);
Таким способом может быть выполнена проверка http заголовков для любой страницы или ресурса чтобы сразу определить все ли отправляется правильно. Например, посмотрим заголовки для изображения:
curl -I https://losst.ru/wp-content/uploads/2016/08/map-2.png
Мы можем видеть, что картинка будет храниться в кэше намного дольше (max-age) чем html страница.
Осталось проверить работают ли такие заголовки, как If-Modified-Since и If-None-Match. Первый позволяет выполнять проверку актуальности кэша по дате модификации, второй — по контрольной сумме поля ETag. Кэш очень важен, чтобы снизить нагрузку на ваш сервер. Если страница не изменилась, то сервер лишь сообщает что она не изменилась, отправляя код ответа 304, вместо передачи полного файла.
Конечно, вы можете использовать для этого онлайн сервисы, но работают они плохо и не всегда показывают верное значение. Поэтому пользуемся опять curl.
Проверка If-Modified-Since
Сначала запрашиваем нашу страницу для просмотра заголовков http, а затем копируем поле Last-Modified:
curl -I https://losst.ru
Теперь запрашиваем ее еще раз, но уже с заголовком If-Modified-Since: и ваша дата:
curl -I —header ‘If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT’ https://losst.ru
В ответ вы должны получить не саму страницу, а только заголовок HTTP/1.1 304 Not Modified. Если так, значит проверка кода ответа сервера пройдена и все работает верно.
Проверка If-None-Match
Заголовок If-None-Match работает похожим образом, только здесь используется значение контрольной суммы кэша из поля ETag. Опять запросим нашу страницу и скопируем сумму:
curl -I https://losst.ru
Затем отправим полученную сумму с заголовком:
curl -I —header ‘If-None-Match: «58615db8-19034″‘ https://losst.ru
И снова мы должны получить ответ 304, страница не изменена.
Проверка сжатия
Сжатие позволяет уменьшить размер передаваемых данных, но в то же время создает дополнительную нагрузку на сервер. Чтобы проверить поддерживает ли сервер сжатие gzip нужно отправить в запросе заголовок Accept-Encoding с параметром gzip:
curl -I https://losst.ru —header ‘Accept-Encoding: gzip’
В ответе мы увидим поле Content-Encoding: gzip. Это будет означать, что сжатие используется.
Выводы
В этой статье мы рассмотрели как выполняется проверка ответа сервера и проверка http заголовков, это может быть очень полезно для аудита технической стороны вашего сайта, а также для решения определенных проблем. Надеюсь, изложенная в статье информация была вам полезной.
Источник