1 名前: ◆gfD86vH6Zo [03/07/04 23:32] 2ちゃんねる専用のブラウザを作っちゃおう というプロジェクトです。 [前スレ1より] Part 1 pc.2ch.net/test/read.cgi/tech/981726544/ Part 2 pc.2ch.net/test/read.cgi/tech/1005282763/ Part 3 pc3.2ch.net/test/read.cgi/tech/1012544484/ Part 4 pc2.2ch.net/test/read.cgi/tech/1042432238/ monazilla.org (w www.monazilla.org/
405 名前:402 mailto:sage [2006/03/09(木) 09:51:08 ] というと非圧縮でもdatファイル自体は必ずあるのかな?
406 名前:委員長 ◆/DABoneCRY mailto:sage [2006/03/09(木) 21:02:24 ] >405 そうとは限らなかったように思います。 datをまず取りに行き、なければ、.dat.gzで試みるという感じになるかと 思います。
407 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 21:15:29 ] 逆じゃね?
408 名前:委員長 ◆/DABoneCRY mailto:sage [2006/03/09(木) 22:00:50 ] ああ、逆の方が良いかもしれない。 .dat.gzを後付け対応したA Boneでは上記の形になっていたんだ。 二度手間になる率がどっちが高いのか調べてないので何とも言えないけど スレッド丸ごと取得なら、事前に圧縮されている.dat.gzを優先するべきかな?
409 名前:402 mailto:sage [2006/03/09(木) 22:04:38 ] ああいや>>405 で言いたかったのは、過去ログHTMLがある場合 datも圧縮、非圧縮最低どちらかが必ずあるのかなと。 存在の有無確認としては dat.gz、dat、htmlの順になると思いますが。
410 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 13:03:18 ] 過去ログ二変換されてたらdatはないよなあ
411 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 00:10:01 ] JBBSの post/get の仕様ってどうなってるんでしょうか? 資料等公開されていないのでしょうか?
412 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 01:41:39 ] jbbs.livedoor.jp/bbs/read.cgi/computer/351/1040452916/126- jbbs.livedoor.jp/bbs/read.cgi/computer/351/1091172832/ あたり?
413 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 04:58:00 BE:5594876- ] ・HTML化された過去ログはhtmlとdatの両方がある。 ・datは ".dat" か ".dat.gz" のどちらかである。 ・".dat" にアクセスするときも、gzipを許可すると圧縮されて送られてくる。
414 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 05:09:12 BE:7459878- ] .dat.gz と .dat 、どちらを優先するか。 最近はほとんどHTML化されてないけども、されるときは、 見た限り全て .dat なので、最近のログに限って言えば .dat を優先するのが効率的。 HTML化がそれなりにされ、.dat.gz が主流だった時代のログ、 更にそれ以前の、圧縮なんて全くされていなかった時代のログ、 はて、どのログへのアクセスが多いのだろうか。
415 名前:402 mailto:sage [2006/03/11(土) 09:29:12 ] ふむ。じゃあ、 URLは、pc.2ch.net/tech/kako/981/981726544.dat Accept-Encoding: gzip とリクエストすれば圧縮か非圧縮のどちらかが返ってくるってことですね。 それで返ってこない場合はスレッドが存在しないと判断でいいかな。 htmlの有無は見ない。
416 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 15:02:31 ] >>412 ありがとうございます。そちらを見てみます。
417 名前:402 mailto:sage [2006/03/12(日) 23:11:01 ] むぅ、 pc.2ch.net/tech/kako/981/981726544.dat へアクセスするときAccept-Encoding: gzipつけても人大杉になるな・・・ pc.2ch.net/tech/kako/981/981726544.dat.gz だとAccept-Encoding: gzipつけようがつけまいがgzipで返ってくる。 つまり>>404 と逆のケースで、 pc.2ch.net/tech/kako/981/981726544.dat.gz はあるけど pc.2ch.net/tech/kako/981/981726544.dat はない模様。 ぬるぽ。
418 名前:402 mailto:sage [2006/03/12(日) 23:38:27 ] 結局、何をてこずってるのかというと・・・ あるスレに、どこかのスレへのリンクがあるとする。 このスレの>>1 みたいに過去ログへのリンクとか。 リンクはhttp:/..../test/read.cgi/..../の形式で書いてあるとする。 通常リンクを書くときはread.cgiを含んだ形式のはず。 可能性としてそのスレッドは、 -ライブスレッド -●でしか見れない -過去ログdat -過去ログdat.gz -過去ログhtml のいずれか。 これをどう読むかを考え中です。
419 名前:402 mailto:sage [2006/03/12(日) 23:41:31 ] 今、考えているのは -URLを解析してライブスレッドのdatを直読みに行く --あれば、そのまま表示して終了 たとえば、このスレのpart1は pc.2ch.net/test/read.cgi/tech/981726544/ だけどライブと仮定すると pc8.2ch.net/tech/dat/981726544.dat へアクセスすることになる。 もしリンクがサーバー移転前のもので、まだライブスレッドならアクセスできる。 -datがない場合 -リンクのURL(read.cgi)でそのままアクセス --過去ログ倉庫に保存されていますの場合(●でしか見れない) ---offlaw.cgiで読みに行って、あれば表示して終了 ---なければ、「スレッドありません」、とエラー表示して終了 --隊長!過去ログ発見しましたの場合 ---過去ログHTMLのリンクが書いてあるので解析 ---それを元に過去ログdatを読みに行って、あれば表示して終了 ---なければ過去ログdat.gzを読みに行って、あれば表示して終了 ---これでもなければ過去ログhtmlを読みに行って、あれば表示して終了 ---これでもなければ、「スレッドありません」、とエラー表示して終了 もっと負荷減らせそうな良い方法ありますかね? 最初はライブのdatじゃなくread.cgiにアクセスして判断するほうがいいのかな。
420 名前:委員長 ◆/DABoneCRY mailto:sage [2006/03/13(月) 00:04:10 ] UserAgentは「Monazilla」を名乗ってます? 幾分古い情報となっているかもしれませんが、以下のサイトも 参考になると思います。 age.s22.xrea.com/talk2ch/
421 名前:402 mailto:sage [2006/03/13(月) 00:48:49 ] Monazillaは名乗ってます 2ちゃんとーくにも、dat,dat.gzのいずれかがありますと書いてますが、 裏を返せば、やはりどちらかしかないことがあるということですよね。 委員長さんは、>>418 の件、どのような手順でスレッド取得してますか?
422 名前:委員長 ◆/DABoneCRY mailto:sage [2006/03/13(月) 02:16:47 ] >421 > 裏を返せば、やはりどちらかしかないことがあるということですよね。 そうだと思います。 実際に専用ブラウザ開発をやってると、「結果として取れればOK」って スタンスになってしまいますので、datとdat.gzのどちらもあるのか?とか どっちの方が確立が高いのか?とか、そういうのは全然考えてません。(^-^; > 委員長さんは、>>418 の件、どのような手順でスレッド取得してますか? -ライブスレッド -過去ログdat -過去ログdat.gz -●でしか見れない (offlaw.cgi 経由/ログイン時のみ) の順番で取りに行ってますね。 踏んだURLは基本的にご指摘の通り、read.cgi経由ですが A Boneの場合、内部的には全てdatのURLで管理していますので 自動的にdatのURLに変換しており、read.cgiのURLは一切無視。 ライブスレであろうが、過去ログであろうが、単純に上記の手順です。 ただし、それはread.cgi経由のURLを踏んだ場合であって (過去ログか判断出来ないから)、>417のようなdatのURLで書かれて いる場合には、そのまま過去ログdatからスタートしてます。(当たり前ですが) >419の件ですが、offlaw.cgiを最後にしています。 正解なのか分かりませんが、CGI経由は負荷的に気持ち悪いので 最後にしているというのと、dat、dat.gzでトライしてエラーコード302(だっけ?) を見て判定しているだけなので、効率的(速度的)な問題は無視出来ますから。 何より、過去ログですから、If-Modified-Sinceを指定している限り ライブスレッドと違い、一回取ってしまえば何度も取得しに行く訳でもないので 効率はあまり気にする必要はないかと思いますしね。(最後は華麗に逃げ)
423 名前:402 mailto:sage [2006/03/13(月) 02:52:58 ] >>422 なるほど、その順番いいですね。 確かに存在しないファイルのリクエストの負荷はcgiに比べて低いですし read.cgiが出力するhtmlを解析して過去ログのありかを特定とかも面倒ですし。 さっそくそれで組んでみます。 ども、でした。
424 名前:stream ◆PNstream2s [2006/03/13(月) 16:42:14 BE:138759326- ] 差分取得とかさまざまな場面でIf-Modified-Sinceを使ってる2chブラウザが多いですが。 Last-Modifiedを使う場合、秒単位になってしまいます。 秒単位になると何が起こるかと言うと、 1秒間に複数のレスが付いた場合、レスが付いてるのに 304 Not Modified になってしまう場合があります。 特に1000付近でこれが発生すると、dat全体を再取得しないと最後まで読めなくなってしまいます。 これを防ぐには、Last-ModifiedだけでなくETagを保存しておき、 更新チェックのさいはIf-None-Matchを使用するといいです。
425 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 21:12:06 ] 急浮上?
426 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 23:26:07 ] >>422 ●の唯一公式な機能を使うのに必要なんだからofflaw.cgiの負荷は全く気にする必要ないべ
427 名前:402 mailto:sage [2006/03/15(水) 01:44:56 ] うん、それもそうね。 けど、offlaw先に見に行くよりはdat,dat.gz,offlawの順の方が 仕組み的に楽だったんで。もう組んじゃったし(笑
428 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 15:54:20 BE:1065942- ] HTML化されたスレをofflaw.cgiで見ようとすると、 -ERR 過去ログ倉庫で発見 ../tech/kako/981/981726544.dat.gz とエラーになるので、先にofflaw.cgiを見て、 あれば良し、 HTML化なら過去ログ位置を得る、 「そんな板orスレッドないです。」ならおしまい、 という処理をしてもいいかもしれない。 でも面倒。
429 名前:402 mailto:sage [2006/03/15(水) 16:04:52 ] 結局、offlaw使えるのは●ユーザーだけなんで。 ●もってない人のこともかんがえて処理すると 先に述べた方法が一番かと。
430 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 19:03:04 BE:3197838- ] だねー。
431 名前:委員長 ◆/DABoneCRY mailto:sage [2006/03/15(水) 20:32:55 ] あえて付け加えるなら、●ユーザーであっても offlaw.cgiを使わずにdatや、dat.gzで済むなら、 それに越したことはないので、offlaw.cgiは 最後の手段という考え方の方が良いと思いますよ。
432 名前:http://www.vector.co.jp/soft/win95/util/se072729.html [2006/03/18(土) 20:54:25 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
433 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 04:32:04 ] "-ERR 過去ログ倉庫で発見"を処理しないブラウザで過去ログが取得できないケースとか offlaw.cgiで送られてくるほうが新しいというケースとかあった気がする。
434 名前:デフォルトの名無しさん mailto:sage [2006/03/32(土) 01:53:43 ] JBBSのsubject.txtは、なぜ最後の行に1行目と同じ内容の物が出力されるのだろう。 全板でそうなら最後の1行スキップすればよいのだが・・・
435 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 10:58:04 ] >>434 最後の行と最初の行が同じだったら 最後の行を削除したらいいじゃない
436 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 17:30:40 ] あ、同じかどうか判定して・・・って意味でw
437 名前:デフォルトの名無しさん [2006/04/12(水) 03:17:45 ] ゙lliii,,,,,,,,,,,,, llliiiii,, lllii,,,,、 lll,, .,,ill!!!!゙゙゙゙゙ .'lllll° .lllii,, ゙!llll 'lllllii .” : : : lllll ゙゙lllll .,illl! lii _,,iiilllll゙゙゙!!liii,, !lll| .'llii . .,illll lllllll!゙° .'lllll ゙llll,,,,,iiiiill!!!!!l ,,ill!゙ : ..゙゙゜ .,lllll ..,,,iiil!!!゙゙゙″ .,illllilllllllliii,, ,,ill ,lllll゜ ,,iil!l゙° ,,illll!゙° 'lllll ,,ill! ,,illlll° .lll!° ,illl!゙` .llll| .,,illll ..,,,iill!!° .゙!lii,,_ _、 iilll!゙ .lllll,,,,,,,,iiill!!゙ _,,,,iiil!!゙゙’ ゚゙゙!!!!!lllllllllll!!!!!!!! '!!l° .゙゙゙!!!!゙゙゙
438 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 15:59:42 ] >>435 うん、そうした。 でもなんでこんな仕様になってるのやら。
439 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 23:55:14 ] RSS配信開始で新しいプロジェクトがいっぱい出てくる予感 ・・・monazillaとは関係ないところで・・・
440 名前:デフォルトの名無しさん [2006/05/09(火) 21:44:21 ] t
441 名前:デフォルトの名無しさん mailto:sage [2006/05/16(火) 18:20:34 BE:7466483- ] monazillaを引き継いでみる。
442 名前:デフォルトの名無しさん [2006/05/16(火) 18:41:41 BE:7466483- ] monazillaプロジェクト+aの勢いで
443 名前:デフォルトの名無しさん [2006/05/16(火) 18:45:14 ] >>66 いるYO!
444 名前:デフォルトの名無しさん [2006/05/16(火) 21:43:14 BE:9955384- ] 名称は「Monazila Japan」に決定。
445 名前:c⌒っミ `Д)っφ ◆CaKkuEV3EI mailto:c⌒っミ `Д)っφsage [2006/05/24(水) 23:00:30 BE:2200872-#] monazilla info.2ch.net/wiki/pukiwiki.php?monazilla ページが刷新しました。 qb5.2ch.net/test/read.cgi/operate/1132069137/134-n qb5.2ch.net/test/read.cgi/operate/1131503902/72-n 従来のページはこちらに移動です。 monazilla/develop info.2ch.net/wiki/pukiwiki.php?monazilla%2Fdevelop
446 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 01:03:41 ] otu
447 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 18:26:56 ] http要求ヘッダ例 GET /newsplus/subject.txt HTTP/1.0 Accept-Encoding: gzip Host: news2.2ch.net User-Agent: Monazilla/1.00 Connection: close ttp://age.s22.xrea.com/talk2ch/ 2ちゃんのスレッドを取得するプログラムをC#で作ろうとしているんですが ログを受信する際、こういったヘッダ情報は送信する必要はありますか? 以前試したテストプログラムではUser-AgentやAccept-Encodingは特に設定しなくても 問題なくデータが取得できてしまったんですが・・・
448 名前:stream ◆PNstream2s [2006/05/26(金) 18:51:22 BE:555033986-#] >>447 datファイルは特に規制かけてないみたいなので HTTPの仕様に沿った要求を行えば特に問題ないですね。 ただ、さまざまな理由で規制がかけられないとは限らないんで User-Agent はMonazillaを名乗っておいたほうがよさげ。 さすがに Accept-Encoding: gzip 無しが規制されるとは思えないけど、 C#って.NET2.0なら自動でgzipを展開してくれる機能があるから それを利用して2chの負担を減らそう。 ちなみに offraw.cgi はgzip必須だったような。 read.cgi はUser-Agent必須だったような。
449 名前:447 mailto:sage [2006/05/26(金) 19:02:37 ] >>448 ご指摘ありがとうございます。 > C#って.NET2.0なら自動でgzipを展開してくれる機能があるから > それを利用して2chの負担を減らそう。 C#でgzipの圧縮・解凍ができるとは知りませんでした(汗 早速調べてみます。 ところでgzipを使ったときもログの差分取得は可能でしょうか? そもそもgzipを使ってログを圧縮しているなら、わざわざ差分取得しなくても 鯖には大した負担はかからないでしょうか?
450 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 19:10:24 ] 今gzip圧縮ってしてるの? 転送量よりもCPU負荷の方を軽減したいって感じだったと思うけどうるおぼえ。
451 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 19:44:35 ] Content-RangeとAccept-Encoding:gzipを同時に指定すると、 httpの意味上からは、「gzip済みのdatファイル」の途中から しか送ってくれないので役に立たない。
452 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 00:43:57 ] >>450 うろおぼえ が正しいんじゃなかったか? >>451 初回だけgzipで取れって事?
453 名前:447 mailto:sage [2006/05/27(土) 00:54:09 ] >>451 その差分に関して何ですが、 ttp://age.s22.xrea.com/talk2ch/#get によりますと、 DAT差分を取得 要求ヘッダに次の項目を追加する If-Modified-Since: リモートDATの最終更新時刻(値は応答ヘッダのLast-Modifiedを調べる) Range: bytes=ローカルDATのファイルサイズ- ※If-Modified-SinceとDateヘッダの値は、RFC1123形式で表される時刻。例えば、Fri, 30 Mar 2001 22:35:45 +0900 とのことです。そこで次のようなプログラムを記述したのですが、 System.Net.WebClient wc = new System.Net.WebClient(); wc.Headers.Add("User-Agent", "Monazilla/1.00 (mytool/1.00)"); wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900"); System.IO.Stream st = wc.OpenRead("pc8.2ch.net/tech/dat/1057329161.dat "); System.Text.Encoding enc = System.Text.Encoding.GetEncoding("Shift_JIS"); System.IO.StreamReader sr = new System.IO.StreamReader(st, enc); string html = sr.ReadToEnd(); sr.Close(); st.Close(); Console.WriteLine(html); なぜか実行しようとするとエラーが発生してしまいます。そこで wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900"); のところをコメントアウトすると問題なく実行してログを取得してくれます。 差分取得するときの要求ヘッダの与え方に何か間違い等はありますか(´・ω・`)?
454 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 01:07:51 ] HTTP-date = rfc1123-date | rfc850-date | asctime-date rfc1123-date = wkday "," SP date1 SP time SP "GMT" rfc850-date = weekday "," SP date2 SP time SP "GMT" asctime-date = wkday SP date3 SP time SP 4DIGIT date1 = 2DIGIT SP month SP 4DIGIT ; day month year (e.g., 02 Jun 1982) date2 = 2DIGIT "-" month "-" 2DIGIT ; day-month-year (e.g., 02-Jun-82) date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) ; month day (e.g., Jun 2) time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59 wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" weekday = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday" month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
455 名前:stream ◆PNstream2s [2006/05/27(土) 02:00:12 ] >>450 ほとんどの鯖でgzip圧縮してるよ >>453 おかしいですねえ。 Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。 と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。
456 名前:447 mailto:sage [2006/05/27(土) 02:03:05 ] >>455 > おかしいですねえ。 > Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。 > と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。 そんなことがあるんですか(;´Д`)・・・
457 名前:stream ◆PNstream2s [2006/05/27(土) 11:18:07 ] まあ、HttpWebRequest/HttpWebResponseを使えってことなんですかねえ。 If-Modified-Since にDateTime構造体を突っ込むことが出来たりするので ちょっと手の込んだHTTPリクエストを行う場合はWebClientより便利だと思いますよ。
458 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 11:25:52 ] etag保存しといてif-none-matchを仕掛けた方がいいという話もある
459 名前:stream ◆PNstream2s [2006/05/27(土) 16:31:16 ] 新しい書き込みの仕様 レス FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい key= ←スレッドキー hana=mogera ←追加。常にmogeraを送っとけばいいのかな。 Cookieは不要。
460 名前:stream ◆PNstream2s mailto:sage [2006/05/27(土) 16:35:43 ] スレ立て subject= ←スレッドのタイトル FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい hana=mogera ←追加。常にmogeraを送っとけばいいのかな。
461 名前:stream ◆PNstream2s mailto:sage [2006/05/27(土) 16:36:37 ] Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので Cookieも今までどおり必要ですね
462 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 17:28:01 ] >>453 >wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900"); RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 3.3 Date/Time Formats 3.3.1 Full Date All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception.
463 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 17:33:44 ] クッキー認証、クッキーの必要なサーバーなら出る sports鯖とかsports2.2ch.net/wc/ pc8.2ch.net/test/read.cgi/tech/1057329161/ 459 :stream ◆PNstream2s :2006/05/27(土) 16:31:16 新しい書き込みの仕様 レス FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい key= ←スレッドキー hana=mogera ←追加。常にmogeraを送っとけばいいのかな。 Cookieは不要。 460 :stream ◆PNstream2s :2006/05/27(土) 16:35:43 スレ立て subject= ←スレッドのタイトル FROM= ←名前 mail= ←メール欄 MESSAGE= ←本文 bbs= ←板のディレクトリ名。operateとかtechとか time= ←現在時刻より小さい値を適当に。1を送っておけばよい hana=mogera ←追加。常にmogeraを送っとけばいいのかな。 461 :stream ◆PNstream2s :2006/05/27(土) 16:36:37 Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので Cookieも今までどおり必要ですね
464 名前:447 mailto:sage [2006/05/27(土) 17:36:55 ] >>462 > >wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900"); > RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 > 3.3 Date/Time Formats > 3.3.1 Full Date > All HTTP date/time stamps MUST be represented in Greenwich Mean Time > (GMT), without exception. wc.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 GMT"); のようにGMTに変えてみましたが依然エラーが返されるようです。 もしかしたら"If-Modified-Since"の部分が間違っているんでしょうか?
465 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 17:38:27 ] すまん、誤爆した
466 名前:447 mailto:sage [2006/05/27(土) 17:56:43 ] >>457 HttpWebResponse/HttpWebRequestを使ってみましたが↓ やはり"If-Modified-Since"のヘッダー情報を追加すると エラーが生じますね・・・ .Netのバグではないような気もします・・・ //HttpWebRequestの作成 System.Net.HttpWebRequest webreq = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("pc8.2ch.net/tech/dat/1057329161.dat "); //サーバーからの応答を受信するためのHttpWebResponseを取得 System.Net.HttpWebResponse webres = (System.Net.HttpWebResponse) webreq.GetResponse(); webres.Headers.Add("User-Agent", "Monazilla/1.00 (mytool/1.00)"); webres.Headers.Add("If-Modified-Since", "Fri, 26 May 2006 10:44:35 +0900"); System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift-jis"); //応答データを受信するためのStreamを取得 System.IO.Stream st = webres.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(st, enc); //受信して表示 string html = sr.ReadToEnd(); Console.WriteLine(html); //閉じる sr.Close();
467 名前:stream ◆PNstream2s mailto:sage [2006/05/27(土) 18:33:23 ] >>466 いや、HttpWebRequest/HttpWebResponseの場合はHeaders.Add("If-Modified-Since",○○) ってやっちゃ駄目なのは仕様。IfModifiedSinceプロパティを使う。 んでWebClientはHeaders.Add("If-Modified-Since",○○)ってやっていいはずなんだけど 実際は出来ないからバグかもしれない、ってことです。
468 名前:447 mailto:sage [2006/05/27(土) 19:03:48 ] >>467 あ、そういうことでしたか。早速IfModifiedSinceプロパティを使わせていただきました。 System.Net.HttpWebRequest webreq = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("pc8.2ch.net/tech/dat/1057329161.dat "); webreq.IfModifiedSince = new DateTime(2006, 5, 26, 0, 0, 0); System.Net.HttpWebResponse webres = (System.Net.HttpWebResponse) webreq.GetResponse(); System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift-jis"); System.IO.Stream st = webres.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(st, enc); string html = sr.ReadToEnd(); Console.WriteLine(html); sr.Close(); コンパイルも通り、問題なく実行もできました。 が、なぜか差分データが取得できませんね・・・ 2006年5月26日移行に書き込まれたデータを取得しようとしたんですが全データが 取得されてしまうようです・・・ 関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば 便利そうなんですが2ちゃんではそういうものには対応していないんですかね。
469 名前:デフォルトの名無しさん [2006/05/27(土) 20:45:54 ] すごい惨めな気持ちになったぞ! どうしてくれる!
470 名前:stream ◆PNstream2s mailto:sage [2006/05/27(土) 20:51:15 ] >>468 If-Modified-Since ヘッダって言うのは「この時間よりあとに未更新だったら送信しないでね」って意味だから 差分データを取得するにはさらに Range ヘッダを使わなければいけない。 HttpWebRequestの場合はAddRangeメソッドを使う。
471 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 20:52:26 ] >>468 > Range: bytes=ローカルDATのファイルサイズ- はどこ行ったんだよ
472 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 20:52:46 ] かぶったorz
473 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 21:44:28 ] >>468 >関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば >便利そうなんですが2ちゃんではそういうものには対応していないんですかね。 2000年8月危機の際にオープンソースとなり有志の手で改良された旧版 read.cgi には raw モードとしてその機能が実装されたが、現在の read.cgi には実装されてない。
474 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 21:55:15 ] 2001年ではなくて?
475 名前:447 mailto:sage [2006/05/27(土) 22:18:47 ] >>470-471 webreq.AddRange((int) fileSize); と指定することで差分データ取得できました\(^o^)/ ちなみにIf-Modified-Sinceヘッダをつけてもつけなくても、 またでたらめな時間や未来の時間にしても取得する差分データ に変わりはありません。AddRangeさえ指定すればIf-Modified-Sinceは 特に指定する必要は無いんでしょうか? >>473 便利な機能は無くなってしまったんですか(´・ω・`) あぼ〜んがあった場合などでも問題なく差分データを取得できると 思われるので重宝すると思うんですが・・・
476 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 22:23:43 ] 鯖の方でいろいろやらなきゃいけないし、 FOXがコードをDSO向けにリファインした時に無くした予感
477 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 00:27:05 ] ハナモゲラ絶対必要なの?
478 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 06:48:32 ] あぼーんがあったときに、ローカルのデータを上書きしてくれるのでありがたい
479 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 13:48:42 ] 例えばレス479まで取得しているスレでリロードすると、 479までのサイズでRange〜とするわけだけど、その時に 新規投稿が無かった場合、.datファイルにはRange〜で指定した 部分は存在しないので406エラーとなる。 そこで、If-Modified-Sinceを付ければ、新規投稿が無い時には 304 Not Modified で新規投稿が無いことがわかる。 406を新規投稿無しと解釈すれば良いじゃないか、とも思えるが、 レスが削除された場合等にも、.datファイルのサイズが既得分より 減って406が出うるので、それと区別ができなくなってしまう。 ブラウザを配布するとかではなくて、個人でどうにかしたいだけなら お好みでどうぞ、とも言えるが。
480 名前:447 mailto:sage [2006/05/28(日) 15:51:01 ] >>479 なるほど、If-Modified-Sinceを活用するとあぼーんの検知もできるようになるということですね。 ちなみに先ほど各種条件を試してみましたところ、 新規投稿がなく、If-Modified-Sinceを指定しなかった場合 416 RequestedRangeNotSatisfiable が返され、 新規投稿が無く、If-Modified-Sinceを指定した場合は 304 Not Modified が返されました。 あぼ〜んがあったと想定するためRange〜を100バイトほど多めに指定し、 If-Modified-Sinceの時刻を過去に戻したところ(あぼーん更新で更新時刻が先に変更されたとシミュレートするため) 416 RequestedRangeNotSatisfiable が返されました。 細かい違いはありますが、 416が返された場合はあぼ〜んがあったと推測し、全ログを取得し直すようにすればいいわけですね?
481 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 16:18:35 ] あ、416だった(ハズイ
482 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 16:26:38 ] そっすね、全取得になるかと。 ブラウザとしてだと、自動再取得の前に、何が削除されたか 知っておきたい、という需要もあるけどね。
483 名前:デフォルトの名無しさん mailto:sage [2006/05/28(日) 16:32:30 ] Range指定にIf-Modified-Sinceを付加する理由として ひとつは、HTTP/1.1の旧仕様では416が規定されておらず Rangeが範囲外を指定しているとRangeを無視して200を返していたというのがある。 少なくとも、このスレの初代が出来た頃の2chのapache(1.x)はそうだったし 互換板等ではまだそういう鯖も存在するかもしれない。 もうひとつは、 あぼーん検出のために末尾の'\n'等数バイトを含めてRange指定で取得すると 未更新の場合でもファイルの読み書きが発生して 鯖に本来不要な負荷をかけてしまうという点がある。 If-Modified-Sinceを併用することで、これを防ぐ。
484 名前:447 mailto:sage [2006/05/29(月) 19:29:37 ] 2ちゃんのスレッドを取得したときに考えられるケースとして、 a) 正常に取得 b) URLを間違えてしまった c) すでに1000を超えていた d) すでに過去ログとして倉庫落ちしてしまった e) 人大杉 の5通りくらいあるかと思います。いずれも帰ってくるステータスコードは 200 HTTP_OKなんですがみなさんどうやってそれぞれのケースを判別されてますか?
485 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 20:25:21 ] それは、 本当は302が返っているのに、リダイレクトされているだけ
486 名前:デフォルトの名無しさん mailto:sage [2006/05/31(水) 23:54:51 ] c)は違うだろ(まだdat落ちしてなければ)
487 名前:stream ◆PNstream2s mailto:sage [2006/06/01(木) 08:21:08 ] >>484 b) AllowAutoRedirect = false datファイルが302 Found が返ってくるかどうか。 d)と比べたいならread.cgiにもアクセスする。 c) datファイルが1000行あるか調べる d) AllowAutoRedirect = false datファイルが302 Found が返ってくるかどうか。 b)と比べたいならread.cgiにもアクセスする。 e) datファイルで人大杉?
488 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:46:04 ] ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/26999/1149328392/ したらばのdatってどう取得したらええんやろ(´・ω・`)?
489 名前:stream ◆PNstream2s mailto:sage [2006/06/03(土) 20:17:03 ] ProxomitronとかEtherealとかつかって、既存の2chブラウザが何やっているかを把握すべし
490 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 22:35:17 ] >>488 > ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/26999/1149328392/ んなもん ttp://jbbs.livedoor.jp/computer/dat/26999/1149328392.dat とでもすればいいんじゃね〜か、と思っていたが意外と違うもんだな・・・
491 名前:stream ◆PNstream2s mailto:sage [2006/06/03(土) 22:44:03 ] Jane Nida で確認してみた ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/ レス番指定も ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/10-20
492 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:29:32 ] >>491 > レス番指定も > ttp://jbbs.livedoor.jp/bbs/rawmode.cgi/computer/26999/1149328392/10-20 うおっ!めちゃくちゃ便利じゃん♪ 2ちゃんもしたらばみたいな方式だとありがたいんだが。
493 名前:stream ◆PNstream2s mailto:sage [2006/06/04(日) 01:32:26 ] >>492 CGIが動く負荷とdatファイルを読み出す負荷は10〜100倍ぐらい違うんだよ
494 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:40:46 ] >>493 なるほど、2ちゃん規模の掲示板だと2ちゃん方式は必要悪というわけなのか。
495 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 03:05:00 ] 因みに過去ログは jbbs.shitaraba.com/bbs/read.cgi/computer/10298/1071738986/ ↓ jbbs.livedoor.jp/computer/10298/storage/1071738986.html htmを自前でDatに変換ね
496 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 06:31:07 ] したらばはdat公開してないよ IPとかもdatに保存してあるから
497 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 15:09:36 ] > IPとかもdatに保存してあるから ((((((;゚Д゚))))))ガクガクブルブル
498 名前:デフォルトの名無しさん mailto:sage [2006/06/05(月) 00:08:49 ] そんなに怖がることはないだろ
499 名前:デフォルトの名無しさん mailto:sage [2006/06/06(火) 23:37:48 ] >>463 いまはsubmitってチェックしてないのかな? 間違えて「書き込む」をUTF-8でエンコードしてたけど書き込めてた。 >>455 GET /newsplus/subject.txt HTTP/1.0 Accept-Encoding: gzip Host: news2.2ch.net User-Agent: Monazilla/1.00 Connection: close と、「と〜く2ちゃんねる」通りにリクエストしても datファイルはプレーンテキストで送られてくるのですが、 どの鯖ならgzipで返ってくるんだろう。 リクエストの仕方が間違ってる? おかげで、gzipでdatを受信した場合の動作確認ができない。 普通の応答は解凍できてるから、たぶん大丈夫だとは思うんだけど・・・。
500 名前:デフォルトの名無しさん mailto:sage [2006/06/07(水) 03:05:38 ] HTTP/1.1?
501 名前:デフォルトの名無しさん mailto:sage [2006/06/07(水) 03:11:40 ] news2?
502 名前:stream ◆PNstream2s mailto:sage [2006/06/07(水) 14:37:34 ] telnetしてみた GET /newsplus/subject.txt HTTP/1.0 Host: news2.2ch.net Accept-Encoding: gzip HTTP/1.1 200 OK Date: Wed, 07 Jun 2006 05:36:10 GMT Server: Apache/2.0.58 Last-Modified: Wed, 22 Mar 2006 02:11:13 GMT ETag: "16310f0-0-40f8be7f05240" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip ← Content-Length: 20 Connection: close Content-Type: text/plain; charset=shift_jis ただ単に中身が無いからgzipになってないように見えるだけでは?
503 名前:499 mailto:sage [2006/06/09(金) 03:18:20 ] >>499 はと〜く2ちゃんねるのをコピペしただけなので、 実際には運営情報板とかでテストしてます。 >>502 おお、telnetで試してみたらgzipで返ってきました。 でも、全く同じメッセージ送ってみてもWinsock(2.0)使った 自作プログラムではプレーンテキストが返ってくる。 う〜ん、何が違うんだろう。
504 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 16:52:14 ] > User-Agent: Monazilla/1.00 ヘッダーにこの情報を記述しなくてもDATが取得できたんだけど これっておまじない程度のものなの?
505 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 04:40:05 ] 過去ログにさんざん書かれてますよ。