Получить необработанный вывод с веб-сервера
Для исследования я ищу фактические исходные данные, которые Apache отправляет при ответе на запрос, включая все данные get, заголовки и HTML. Как бы я пошел по этому поводу? Я пытался:
wget --output-document=response.txt -S "http://thewebsiteinquestion.com"
Это показывает мне, что заголовки ответов хорошо разложены по слоям и отправляет HTML-код в response.txt, но я действительно хочу увидеть необработанный текст и его форматирование.
2 ответа
Я думаю, что это можно сделать с помощью wget, но я знаю, как это сделать с помощью curl. yum install curl
или что угодно для вашей ОС, если она еще не установлена:
curl -vv http://thewebsiteinquestion.com
Вывод покажет вам необработанный ответ от сервера, включая заголовки и тело, как вы хотели. Это чисто предпочтительная вещь, но я, как правило, нашел curl
проще и понятнее в использовании для тестирования и разработки, чем wget
,
Иногда также полезно использовать telnet
и говорить сырой HTTP. Как системный разработчик / разработчик я нахожу это бесценным. Например:
$ telnet google.com 80
Trying 74.125.239.0...
Connected to google.com.
Escape character is '^]'.
GET / HTTP/1.0
Host: google.com
HTTP/1.0 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Thu, 20 Sep 2012 22:31:32
... the rest ommitted
Все, что вам нужно набрать вручную, это GET / HTTP/1.0
а также Host: google.com
линий. Затем нажмите Enter дважды. Таким образом, вы действительно видите полный ответ от удаленного HTTP-сервера, и ничто не мешает. Поэкспериментировав с ним, вы лучше узнаете, как работает HTTP, и никогда не запутаетесь, когда происходят перенаправления (как вы можете видеть выше, через 301
HTTP-статус и Location
header), и ваш инструмент (браузер, wget, curl) обрабатывает их автоматически для вас.
Редактировать: как передать параметры GET используя telnet
, Просто добавьте их к пути, который вы получаете, когда говорите по HTTP:
$ telnet thewebsite.co.uk 80
Trying 95.131.67.221...
Connected to thewebsite.co.uk.
Escape character is '^]'.
GET /?foo=bar HTTP/1.0
Host: thewebsite.co.uk
HTTP/1.1 200 OK
Date: Fri, 21 Sep 2012 17:43:27 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
Last-Modified: Mon, 01 Jun 2009 20:10
...
Чтобы сделать запрос POST, вы должны рассчитать длину представленных данных и поместить их в Content-Length
и это выглядит так:
$ telnet www.yahoo.com 80
Trying 72.30.38.140...
Connected to ds-any-fp3-real.wa1.b.yahoo.com.
Escape character is '^]'.
POST / HTTP/1.0
User-Agent: telnet
Host: www.yahoo.com
Accept: */*
Content-Length: 8
Content-Type: application/x-www-form-urlencoded
p=foobar
HTTP/1.0 200 OK
Date: Fri, 21 Sep 2012 17:57:35 GMT
P3P: policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
Cache-Control: private
X-Frame-Options: SAMEORIGIN
...