Curl получает HTTP-ответ 0 вместо 200 - PullRequest
0 голосов
/ 11 июля 2020

Привет, у меня есть следующий простой скрипт для чтения некоторых URL-адресов из текста и публикации его в другом текстовом файле с ответом.

#!/bin/bash

while read url

do

    urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "$url")
    
        echo "$url"
        echo "$url  $urlstatus" >> urlstatus.txt
        
        done < $1

В качестве примера я пытаюсь перейти по ссылке:

www.proddigia.com/inmueble/pisos/en-venta/el-putget-i-el-farro/sarria-sant-gervasi/barcelona/6761

Однако я получаю 0 в качестве ответа. Когда я проверяю в Google, я получаю 200. Я что-то упускаю в скрипте?

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Я только что понял, что если вы используете txt-файл, созданный в ОС windows, он не будет работать так, как указано в ubuntu. По этой причине я получил 0. Вам нужно создать txt-файл в Ubuntu и скопировать туда ссылки. В любом случае спасибо за ответы.

0 голосов
/ 11 июля 2020

Ноль не является допустимым кодом ответа HTTP.

Если curl не может установить sh HTTP-соединение с сервером, или если сервер (каким-то образом) не может доставить правильно сформированный Сообщение HTTP-ответа, в этой переменной не будет возврата «HTTP-код». В этом сценарии вы, вероятно, увидите ноль.

Также может быть, что значение $url, которое вы используете, недействительно. Например, если URL-адрес заключен в символы < и >, он curl его не поймет. Я бы ожидал, что и в этом случае будет ноль.

Проблема в том, что --silent говорит curl выбросить все сообщения об ошибках, поэтому он не может сказать вам, в чем проблема.

Я предлагаю вам увидеть, что вы получите, выполнив следующую команду:

  curl -o /dev/null --head "$url"

со строкой URL, идентичной той, которую вы сейчас используете.

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