[BlueLeaf1336]> PROBLEMS> 探求其之弐>
history | TOP |
2005/07/24:作成
2005/08/01:更新
GETコマンドに対するいくつかのWebサーバの応答 | TOP |
続きです(前回分)。前回の最後で、「次回からHTTPデータのダウンロードに入る」と書きましたが、もう少しGETコマンドに対するWebサーバの応答について調べてみることにします。前回作成したプログラムを使って、適当にサーバ名を入力して見ました。
================================================== 2005/07/25 00:40:37 (月) -------------------------------------------------- HOST:www.google.co.jp PAGE:/ -------------------------------------------------- HTTP/1.0 302 Found Location: http://www.google.co.jp/cxfer?c=PREF%3D:TM%3D1122219647:S%3DkgFx7qIaXkfjSfAg&prev=/ Set-Cookie: PREF=ID=61fbca81637dbb58:CR=1:TM=1122219647:LM=1122219647:S=jHxo8WqWK4A2_ZYF; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Content-Type: text/html Server: GWS/2.1 Content-Length: 217 Date: Sun, 24 Jul 2005 15:40:47 GMT Connection: Keep-Alive -------------------------------------------------- ================================================== 2005/07/25 00:41:00 (月) -------------------------------------------------- HOST:www.samurai.com PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:41:06 GMT Server: Apache/2.0.54 (FreeBSD) PHP/4.4.0 Vary: Accept-Encoding Content-Length: 451 Connection: close Content-Type: text/html; charset=ISO-8859-1 -------------------------------------------------- ================================================== 2005/07/25 00:41:36 (月) -------------------------------------------------- HOST:www.geocities.co.jp PAGE:/ -------------------------------------------------- HTTP/1.1 301 Moved Permanently Date: Sun, 24 Jul 2005 15:41:41 GMT Location: http://jp.geocities.yahoo.com Connection: close Content-Type: text/html; charset=iso-8859-1 -------------------------------------------------- ================================================== 2005/07/25 00:41:53 (月) -------------------------------------------------- HOST:jp.geocities.yahoo.com PAGE:/ -------------------------------------------------- [jp.geocities.yahoo.com] IS INVALID ADDRSS. -------------------------------------------------- ================================================== 2005/07/25 00:42:01 (月) -------------------------------------------------- HOST:www.geocities.yahoo.com PAGE:/ -------------------------------------------------- HTTP/1.0 200 OK Date: Sun, 24 Jul 2005 15:42:07 GMT P3P: policyref="http://p3p.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 GOV" Connection: close Content-Type: text/html -------------------------------------------------- ================================================== 2005/07/25 00:42:14 (月) -------------------------------------------------- HOST:www.yahoo.com PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:42:19 GMT P3P: policyref="http://p3p.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 GOV" Cache-Control: private Vary: User-Agent Set-Cookie: FPB=u6ui614a511e7dmr; expires=Thu, 01-Jun-2006 19:00:00 GMT; path=/; domain=www.yahoo.com Connection: close Content-Type: text/html -------------------------------------------------- ================================================== 2005/07/25 00:42:21 (月) -------------------------------------------------- HOST:www.yahoo.co.jp PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:42:26 GMT P3P: policyref="http://privacy.yahoo.co.jp/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 GOV" Expires: -1 Pragma: no-cache Cache-Control: no-cache Connection: close Content-Type: text/html;charset=euc-jp -------------------------------------------------- ================================================== 2005/07/25 00:42:31 (月) -------------------------------------------------- HOST:www.microsoft.co.jp PAGE:/ -------------------------------------------------- HTTP/1.1 302 Object moved Connection: close Date: Sun, 24 Jul 2005 15:42:37 GMT Server: Microsoft-IIS/6.0 Level: C2 X-Powered-By: ASP.NET Location: http://www.microsoft.com Content-Length: 145 Content-Type: text/html Cache-control: private -------------------------------------------------- ================================================== 2005/07/25 00:42:48 (月) -------------------------------------------------- HOST:www.iis.co.jp PAGE:/ -------------------------------------------------- HTTP/1.1 404 Not found Server: Zeus/4.2 Date: Sun, 24 Jul 2005 15:42:52 GMT Connection: close Content-Type: text/html -------------------------------------------------- ================================================== 2005/07/25 00:43:03 (月) -------------------------------------------------- HOST:www.iis.com PAGE:/ -------------------------------------------------- HTTP/1.1 301 Error Location: http://www.iis.com/ Server: Microsoft-IIS/5.0 Content-Type: text/html Content-Length: 142 -------------------------------------------------- ================================================== 2005/07/25 00:43:36 (月) -------------------------------------------------- HOST:www.http.com PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:45:19 GMT Server: Apache/2.0.49 (Unix) PHP/4.3.9 X-Powered-By: PHP/4.3.9 Connection: close Content-Type: text/html; charset=ISO-8859-1 -------------------------------------------------- ================================================== 2005/07/25 00:47:17 (月) -------------------------------------------------- HOST:www.unix.com PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:47:23 GMT Server: Apache/1.3.28 (Unix) PHP/4.3.10 X-Powered-By: PHP/4.3.10 Connection: close Content-Type: text/html -------------------------------------------------- ================================================== 2005/07/25 00:47:29 (月) -------------------------------------------------- HOST:www.fjtk.com PAGE:/ -------------------------------------------------- [www.fjtk.com] IS INVALID ADDRSS. -------------------------------------------------- ================================================== 2005/07/25 00:47:42 (月) -------------------------------------------------- HOST:www.delphi.com PAGE:/ -------------------------------------------------- HTTP/1.1 200 OK Date: Sun, 24 Jul 2005 15:47:48 GMT Server: Jetty/4.2.x (SunOS/5.8 sparc java/1.3.1_08) Content-Type: text/html; charset=utf-8 Content-Length: 13550 X-Cache: MISS from delphi.com Connection: close --------------------------------------------------
ヘッダについて考察 | TOP |
2行目以降の順番は特に定まっていないようですが、1行目は「HTTP/1.X XXX XX...X」の形式になっています。やっぱり、1行目をまず読み込んで、「200 OK」をチェックしてから残りのデータの取得に入るのがよさそうです。
ただ、ヘッダ部分の長さが特に決まっていないのが気になります。もちろんマイクロソフト専用ならよいわけですが...。なぜ気になるかというと、ヘッダ部分は基本的に「そのページが存在するかどうかのチェック」だけに使用するわけですから、ページが存在することさえわかってしまえば、読み飛ばすことになります。そうした場合、どの程度のサイズを読み込んだら、おおよそヘッダ部分が終わったとみなせるか(なんとはなしにですが)、妄想しておけると後の方針が決めやすそうな気がするためです。
でもまあいいか。それに、あれです。「Content-Type」も役に立ちそうです。「text/html」となっていればそのページは絶対にバイナリファイルでないことがわかるし「charset=utf-8」とあれば、それなりに文字コードの変換をかけることができます。やっぱりそれなりに対応しないと駄目でしょう。
技術情報のページデータについて考察 | TOP |
前回は、マイクロソフトの技術情報のページデータのヘッダ部分がどんなものかを、ソースをまるまま引用しましたが、今回もそれを使って、何処まで読み込んだら「タイトル」と「説明」が取り出せるかを調べてみます。...。決まりました。再び引用します。
... <title>Microsoft Windows レジストリの説明</title><meta name="robots" content="nofollow,noarchive"><meta name="KBParents" content="7274 5732 5881 6843 6842 3208 6519 5903 1167 3198 6728 1163 3194 3188 6719 6713 6513 3071 1139 5872 7341 6912 7017 1131 6898 5924 1173 5918 5917 5914 7940 3228 5902 7482 3223 3222 3221 7606 6321 5892 5891 3219 5887 5886 5885 "><meta name="Keywords" content="kbinfo kbregistry kbenv kbfaq KB256986"><meta name="Description" content="Microsoft Windows レジストリについて説明し、その編集方法に関する情報を提供します。"><meta name="MS.LOCALE" content="ja"> ...
まず、必要な箇所としては「<title>」から「"><meta name="MS.LOCALE"」までで、この隙間に日本語版であろうが英語版であろうが、タイトルと説明文が含まれているようです。今現在は。
次にタイトルは「<title>」から「</title>」まで。これは簡単です。
最後に説明は「<meta name="Description" content="」から「"><meta name="MS.LOCALE"」まで。こっちはなんとも言えず気持が悪いです。
いやいや、実際はどの3つも微妙です。たとえば「<title>」を見つけるようにしてしまうと、タグの途中に改行があった場合や、閉じタグまでにオプション(指定できるかどうか知らないんですが...)を記述されたら、ハイソレマデヨ、なあたり。これは、目印に使おうとしている全てのタグにいえることです。
ま、いいか。そんなこと言い出したら終わりません。
2005/08/01 | TOP |
わざわざ「GET」コマンドを送って「改行2連続でヘッダ完了」なんて判定しなくても、最初から「HEAD」コマンドでヘッダだけ取得すればすむのか。
そうでもないのか...。「HEAD」コマンド送っても「GET」と同じ全データ返すサーバーがあります。「www.yahoo.co.jp」とか。他は知りませんが。
しかし、全く進みません。9月末までにやってしまわないと、光ファイバー100MBのモニター期間が終わってしまうのに。
EOF | TOP |