netcatを使ってHTTP経由でURLを取得する方法は?

netcatを使ってHTTP経由でURLを取得する方法は?

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 

同じウェブサイトがブラウザで正常に開くことができます。

ベストアンサー1

HTTP要求のヘッダーはCRLF(Windows)行末を使用する必要があります。 (望むよりウィキペディアまたはRFC 2616.) 多くのサーバーは拡張機能として LF(Unix) 行末をサポートしますが、このサーバーはサポートしていません。

また、HTTP 1.1にはHost:次のヘッダー行が必要です。ウォーレン・ヤングは指摘した。。 (望むよりウィキペディアまたは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またはカールを使用するとどうなりますか?

おすすめ記事