2014年12月21日日曜日

[Windows]netcat で Web ページを取得する

netcat で web サイトのデータを取得します。

Windows 版で行っていますが、基本は Linux 版とも同じだと思います。

用意すること
netcat をダウンロードします。(Windows 版の netcat 参照)
netcat のプログラム nc.exe を c:\Toolkit\nc111nt に置いておきます。

Web サイトへアクセス
まずは Web サイト(maruton's memorandum)へアクセスしてみます。

コマンドC:\Toolkit\nc111nt> nc maruton-memorandum.blogspot.jp 80 ↵
HEAD / HTTP/1.1 ↵
※HEAD と HTTP は大文字です。 ↵ は[Enter]キーです。


意味はこのようになります。
nc ・・・ netcat コマンド(nc.exe)
maruton-memorandum.blogspt.jp ・・・ サイトの URL
80 ・・・ ポート番号

HEAD ・・・ ヘッダ情報を取得(ページを取得するなら GET)
/ ・・・ html ファイルへのパス(これはサイトのデフォルトページを取りに行く)
HTTP/1.1 ・・・ HTTP バージョン番号


結果はこのようになりました。
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.co.jp/?gfe_rd=cr&ei=n5mVVPqyLcXJ8ge0ioGwAg
Content-Length: 261
Date: Sat, 20 Dec 2014 15:45:35 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic,p=0.02

Status Code: 302
3xx は Redirection であって、「リクエストを完了させるためには追加の処理が必要」となっているコードです。
Location:ヘッダに移動先のURLが示されます。

Location ヘッダが存在します。
しかも Google のサイトとなっています。


GET コマンド使ってページの取得を試してみます。

コマンドC:\Toolkit\nc111nt> nc maruton-memorandum.blogspot.jp 80 ↵
GET / HTTP/1.1 ↵
※GET と HTTP は大文字です。 ↵ は[Enter]キーです。

結果です。
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.co.jp/?gfe_rd=cr&ei=45qVVMXpOozN8gfq1YHoCQ
Content-Length: 261
Date: Sat, 20 Dec 2014 15:50:59 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic,p=0.02

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.jp/?gfe_rd=cr&amp;ei=45qVVMXpOozN8gfq1YHoCQ">here<
/A>.
</BODY></HTML>
上半分のデータは同じです。
そして下半分に追加のデータがあります。

上半分のデータが同じなのは「HEAD コマンドはヘッダ情報のみ取得してページの内容は取らない」という命令だからです。

ちなみに Location に記載された URL にブラウザでアクセスしてみたのですが、Google のページしか出てこなかったです。


これで終わったらちょっと残念なので、今度は ちゃんと Status Code 200 になるページを見ます。
コマンドC:\Toolkit\nc111nt> nc www.yahoo.co.jp 80 ↵
HEAD / HTTP/1.0 ↵
※HEAD と HTTP は大文字です。今度は HTTP/1.0 にします。 ↵ は[Enter]キーです。

今度の結果はこのようになりました。
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 20 Dec 2014 16:05:53 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.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 GOV"
Cache-Control: private, no-cache, no-store, must-revalidate
Expires: -1
Pragma: no-cache
X-XRDS-Location: https://open.login.yahooapis.jp/openid20/www.yahoo.co.jp/xrds
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN

Status Code: 200
2xx は Success であって、成功を意味するコードです。

GET コマンドを使うとページが取得できます。
ただし、ブラウザではないので、html 文の表示になります。
大量の html 文が出てくるのであんまり面白くなく、ここではここまでにします。

Windows Tools のページに戻る

0 件のコメント:

コメントを投稿