Jaki byłby najprostszy sposób na wysłanie żądania GET do adresu URL przez HTTPS i uzyskanie surowej, nieprzetworzonej odpowiedzi?
Czy można to osiągnąć dzięki zwijaniu? Jeśli tak, jakich opcji należy użyć?
Jeśli chcesz użyć curl
, powinno to działać:
curl -D - https://www.google.com/
Zauważ jednak, że nie jest to surowa odpowiedź. Na przykład kodowanie przesyłania fragmentarycznego nie będzie widoczne w odpowiedzi. Zastosowanie --raw
rozwiązuje to, -v
przydatny jest również tryb pełnych ( ) i -i
pokazuje nagłówki przed treścią odpowiedzi:
curl -iv --raw https://www.google.com/
Jeśli chcesz użyć pagera o mniejszym wyniku, konieczne jest również wyłączenie paska postępu ( -s
):
curl -ivs --raw https://www.google.com/ | less
W zależności od tego, co chcesz zrobić, może to stanowić problem.
Otrzymujesz wszystkie nagłówki odpowiedzi HTTP i dokument pod żądanym adresem URL.
Oto prosty sposób, który przychodzi mi na myśl
echo 'GET / HTTP/1.1
Host: google.com
' | openssl s_client -quiet -connect google.com:443 2>/dev/null
HTTP/1.0
Nie jest
curl
, ale powinien być dostępny na prawie wszystkich Uniksach:Jeśli przeszkadzają ci komunikaty o stanie:
Jeśli chcesz zakończenia linii CRLF:
źródło
\r\n
postacie w odpowiedzi?\r\n
zakończeniem linii. Nie wierzę, że to i tak go zachowa, ale jeśli to ma dla ciebie znaczenie, dodam sposób na uzyskanie tego wyniku w odpowiedzi.W dystrybucji Debian / Ubuntu należy do pakietu
lwp-request
.źródło