Http

如何使用 netcat 通過 HTTP 獲取 URL?

  • June 16, 2016

誰能告訴我為什麼我bad request在執行這個命令時得到

echo -e "GET http://www.yellowpages.com.eg/Mjg3NF9VUkxfMTEwX2h0dHA6Ly93d3cubG90dXMtYWlyLmNvbV8=/Lotus-Air/profile.html HTTP/1.1\n\n" | nc www.yellowpages.com 80 

同一個網站可以在瀏覽器中正常打開。

HTTP 請求中的標頭必須使用 CRLF (Windows) 行結尾。(參見WikipediaRFC 2616。)許多伺服器支持 LF (Unix) 行尾作為擴展,但不是這個。

此外,正如Warren Young 所指出Host:的,HTTP 1.1 需要一個標題行。(參見維基百科RFC 2616)。

echo -e "GET http://www.yellowpages.com.eg/Mjg3NF9VUkxfMTEwX2h0dHA6Ly93d3cubG90dXMtYWlyLmNvbV8=/Lotus-Air/profile.html HTTP/1.1\r\nHost: www.yellowpages.com.eg\r\n\r\n" | nc www.yellowpages.com 80

或更清晰

sed $'s/$/\r/' <<EOF | nc www.yellowpages.com 80
GET http://www.yellowpages.com.eg/Mjg3NF9VUkxfMTEwX2h0dHA6Ly93d3cubG90dXMtYWlyLmNvbV8=/Lotus-Air/profile.html HTTP/1.1
Host: www.yellowpages.com.eg

EOF

但是為什麼不使用 wget 或 curl,它們將建構一個有效的請求而不費吹灰之力,並且仍然允許您在必要時指定自定義標頭?

引用自:https://unix.stackexchange.com/questions/15799