monazilla Part 5 ..
[2ch|▼Menu]
385:デフォルトの名無しさん
06/01/08 17:19:47
スキン標準化プロジェクト
URLリンク(dtao.cside.com)

これ守ってる人いる?

386:デフォルトの名無しさん
06/01/08 21:49:41
一応守ってるよ。

VBだったらRegExオブジェクトで正規表現扱えるし

387:デフォルトの名無しさん
06/01/08 22:00:19
何だか偉そうなサイトだな

388:デフォルトの名無しさん
06/01/08 23:20:09
偉いんだよ。

389:逆噴射J ◆lW31l/VtQc
06/01/08 23:24:29
>>383
サンクスです。亀レス申し訳ないです。

390:デフォルトの名無しさん
06/01/23 21:42:13
ほっしゅほっしゅ

391:デフォルトの名無しさん
06/02/05 15:06:03
2ちゃんのあぼーん検出って前回読んだ1バイト前から読んで、
改行コードじゃなかったら、あぼーんと判定するけど、
したらばみたいにhtmlでしか取れないスレッドのあぼーん判定は
どうやればよいでしょうか?

392:デフォルトの名無しさん
06/02/05 18:29:45
仕様も読まずにカキコ
バイト単位で比較してズレてたらあぼんでいいんじゃないかね

393:デフォルトの名無しさん
06/02/05 19:18:11
>>391
レス番で範囲指定するしたらばはバイト数で範囲指定する2chのようにあぼーんで
取得範囲がずれる事はないので、気にしない。
したらばで透明処理があったかどうか、あったとしてrawmode.cgiを使った読み込みでも
番号ずれが起こるのかどうかは忘れた。

394:391
06/02/05 22:08:03
>>393
すみません、書き足りませんでした。
一度最初から読んだら、次回は当然続きから読むわけですが、
おっしゃるとおりバイトがずれることはありません。
ただ、続きから読むので前回取り込んだ分のレスのどれかが
サーバー上であぼーんしてても
キャッシュの方はあぼーんでないままになるってことです。
これはそのままでいいのかな。
解決するには常に最初から読むしかなさそうだし。

395:デフォルトの名無しさん
06/02/05 23:26:36
>>394
意図は分かってるんだけど、気にしないしかない。
想像通り最初から読み直すのが解決策だけど、
それだけのために毎回読み直すような事は推奨できない。

396:391
06/02/05 23:37:05
サーバーの負荷高めるよりは、あぼーんすべきレスが
そのままになってる方がマシって結論ですね。
しかし、ちゃんとこのスレ見てくれてる人がいて安心。
monazilla.orgはもう動いてないみたいですし・・・

397:デフォルトの名無しさん
06/02/05 23:44:58
年末に復活する兆しはあったんだけど、結局頓挫したっぽいね>monazilla
残念

398:デフォルトの名無しさん
06/02/18 02:38:16
monazillaの管理人がすみません忙しいですとだけ言い残していなくなって
くれやがったから。
いっそ完全に沈黙してくれてたら無視して話を進めることもできたのに。

399:デフォルトの名無しさん
06/02/18 11:14:10
虚栄心だけは人一倍だよね。

400:デフォルトの名無しさん
06/02/20 11:42:43
2ch_Xって全部の板に導入されてるの?

401:デフォルトの名無しさん
06/02/20 14:32:43
今どんなブラウザがあるかって、まとめてるサイトあるかな?
仮仮仮仮と2ch browser project MacOSXくらいしか知らんのだけど、
他にあれば教えてください。。。

402:デフォルトの名無しさん
06/03/09 01:51:36
URLリンク(pc.2ch.net)
のようにhtmlとして保存されている過去ログは全て
URLリンク(pc.2ch.net)
のようにgzipされたdatも対に存在していると考えて良いのかな?

403:デフォルトの名無しさん
06/03/09 02:12:10
確か、圧縮されていない場合もあったはず。(特に最近の分?)

404:デフォルトの名無しさん
06/03/09 09:05:13
>>402
URLリンク(qb5.2ch.net)
はあるけど
URLリンク(qb5.2ch.net)
はない模様。

405:402
06/03/09 09:51:08
というと非圧縮でもdatファイル自体は必ずあるのかな?

406:委員長 ◆/DABoneCRY
06/03/09 21:02:24
>405
そうとは限らなかったように思います。
datをまず取りに行き、なければ、.dat.gzで試みるという感じになるかと
思います。


407:デフォルトの名無しさん
06/03/09 21:15:29
逆じゃね?

408:委員長 ◆/DABoneCRY
06/03/09 22:00:50
ああ、逆の方が良いかもしれない。
.dat.gzを後付け対応したA Boneでは上記の形になっていたんだ。
二度手間になる率がどっちが高いのか調べてないので何とも言えないけど
スレッド丸ごと取得なら、事前に圧縮されている.dat.gzを優先するべきかな?

409:402
06/03/09 22:04:38
ああいや>>405で言いたかったのは、過去ログHTMLがある場合
datも圧縮、非圧縮最低どちらかが必ずあるのかなと。
存在の有無確認としては
dat.gz、dat、htmlの順になると思いますが。


410:デフォルトの名無しさん
06/03/10 13:03:18
過去ログ二変換されてたらdatはないよなあ

411:デフォルトの名無しさん
06/03/11 00:10:01
JBBSの post/get の仕様ってどうなってるんでしょうか?
資料等公開されていないのでしょうか?

412:デフォルトの名無しさん
06/03/11 01:41:39
URLリンク(jbbs.livedoor.jp)
URLリンク(jbbs.livedoor.jp)
あたり?

413:デフォルトの名無しさん
06/03/11 04:58:00 BE:5594876-
・HTML化された過去ログはhtmlとdatの両方がある。
・datは ".dat" か ".dat.gz" のどちらかである。
・".dat" にアクセスするときも、gzipを許可すると圧縮されて送られてくる。

414:デフォルトの名無しさん
06/03/11 05:09:12 BE:7459878-
.dat.gz と .dat 、どちらを優先するか。

最近はほとんどHTML化されてないけども、されるときは、
見た限り全て .dat なので、最近のログに限って言えば
.dat を優先するのが効率的。

HTML化がそれなりにされ、.dat.gz が主流だった時代のログ、
更にそれ以前の、圧縮なんて全くされていなかった時代のログ、

はて、どのログへのアクセスが多いのだろうか。

415:402
06/03/11 09:29:12
ふむ。じゃあ、
URLは、URLリンク(pc.2ch.net)
Accept-Encoding: gzip
とリクエストすれば圧縮か非圧縮のどちらかが返ってくるってことですね。
それで返ってこない場合はスレッドが存在しないと判断でいいかな。
htmlの有無は見ない。


416:デフォルトの名無しさん
06/03/11 15:02:31
>>412
ありがとうございます。そちらを見てみます。

417:402
06/03/12 23:11:01
むぅ、
URLリンク(pc.2ch.net)
へアクセスするときAccept-Encoding: gzipつけても人大杉になるな・・・
URLリンク(pc.2ch.net)
だとAccept-Encoding: gzipつけようがつけまいがgzipで返ってくる。
つまり>>404と逆のケースで、
URLリンク(pc.2ch.net)
はあるけど
URLリンク(pc.2ch.net)
はない模様。
ぬるぽ。

418:402
06/03/12 23:38:27
結局、何をてこずってるのかというと・・・
あるスレに、どこかのスレへのリンクがあるとする。
このスレの>>1みたいに過去ログへのリンクとか。
リンクはhttp:/..../test/read.cgi/..../の形式で書いてあるとする。
通常リンクを書くときはread.cgiを含んだ形式のはず。
可能性としてそのスレッドは、
-ライブスレッド
-●でしか見れない
-過去ログdat
-過去ログdat.gz
-過去ログhtml
のいずれか。
これをどう読むかを考え中です。

419:402
06/03/12 23:41:31
今、考えているのは
-URLを解析してライブスレッドのdatを直読みに行く
--あれば、そのまま表示して終了
  たとえば、このスレのpart1は
  スレリンク(tech板)
  だけどライブと仮定すると
  URLリンク(pc8.2ch.net)
  へアクセスすることになる。
  もしリンクがサーバー移転前のもので、まだライブスレッドならアクセスできる。
-datがない場合
-リンクのURL(read.cgi)でそのままアクセス
--過去ログ倉庫に保存されていますの場合(●でしか見れない)
---offlaw.cgiで読みに行って、あれば表示して終了
---なければ、「スレッドありません」、とエラー表示して終了
--隊長!過去ログ発見しましたの場合
---過去ログHTMLのリンクが書いてあるので解析
---それを元に過去ログdatを読みに行って、あれば表示して終了
---なければ過去ログdat.gzを読みに行って、あれば表示して終了
---これでもなければ過去ログhtmlを読みに行って、あれば表示して終了
---これでもなければ、「スレッドありません」、とエラー表示して終了

もっと負荷減らせそうな良い方法ありますかね?
最初はライブのdatじゃなくread.cgiにアクセスして判断するほうがいいのかな。

420:委員長 ◆/DABoneCRY
06/03/13 00:04:10
UserAgentは「Monazilla」を名乗ってます?
幾分古い情報となっているかもしれませんが、以下のサイトも
参考になると思います。
URLリンク(age.s22.xrea.com)

421:402
06/03/13 00:48:49
Monazillaは名乗ってます
2ちゃんとーくにも、dat,dat.gzのいずれかがありますと書いてますが、
裏を返せば、やはりどちらかしかないことがあるということですよね。
委員長さんは、>>418の件、どのような手順でスレッド取得してますか?

422:委員長 ◆/DABoneCRY
06/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
06/03/13 02:52:58
>>422
なるほど、その順番いいですね。
確かに存在しないファイルのリクエストの負荷はcgiに比べて低いですし
read.cgiが出力するhtmlを解析して過去ログのありかを特定とかも面倒ですし。
さっそくそれで組んでみます。
ども、でした。

424:stream ◆PNstream2s
06/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:デフォルトの名無しさん
06/03/13 21:12:06
急浮上?

426:デフォルトの名無しさん
06/03/13 23:26:07
>>422
●の唯一公式な機能を使うのに必要なんだからofflaw.cgiの負荷は全く気にする必要ないべ

427:402
06/03/15 01:44:56
うん、それもそうね。
けど、offlaw先に見に行くよりはdat,dat.gz,offlawの順の方が
仕組み的に楽だったんで。もう組んじゃったし(笑

428:デフォルトの名無しさん
06/03/15 15:54:20 BE:1065942-
HTML化されたスレをofflaw.cgiで見ようとすると、

-ERR 過去ログ倉庫で発見 ../tech/kako/981/981726544.dat.gz

とエラーになるので、先にofflaw.cgiを見て、
あれば良し、
HTML化なら過去ログ位置を得る、
「そんな板orスレッドないです。」ならおしまい、
という処理をしてもいいかもしれない。
でも面倒。

429:402
06/03/15 16:04:52
結局、offlaw使えるのは●ユーザーだけなんで。
●もってない人のこともかんがえて処理すると
先に述べた方法が一番かと。

430:デフォルトの名無しさん
06/03/15 19:03:04 BE:3197838-
だねー。

431:委員長 ◆/DABoneCRY
06/03/15 20:32:55
あえて付け加えるなら、●ユーザーであっても
offlaw.cgiを使わずにdatや、dat.gzで済むなら、
それに越したことはないので、offlaw.cgiは
最後の手段という考え方の方が良いと思いますよ。

432:http://www.vector.co.jp/soft/win95/util/se072729.html
06/03/18 20:54:25
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?

433:デフォルトの名無しさん
06/03/24 04:32:04
"-ERR 過去ログ倉庫で発見"を処理しないブラウザで過去ログが取得できないケースとか
offlaw.cgiで送られてくるほうが新しいというケースとかあった気がする。

434:デフォルトの名無しさん
06/03/32 01:53:43
JBBSのsubject.txtは、なぜ最後の行に1行目と同じ内容の物が出力されるのだろう。
全板でそうなら最後の1行スキップすればよいのだが・・・

435:デフォルトの名無しさん
06/04/10 10:58:04
>>434
最後の行と最初の行が同じだったら
最後の行を削除したらいいじゃない

436:デフォルトの名無しさん
06/04/10 17:30:40
あ、同じかどうか判定して・・・って意味でw

437:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/04/12 15:59:42
>>435
うん、そうした。
でもなんでこんな仕様になってるのやら。

439:デフォルトの名無しさん
06/04/12 23:55:14
RSS配信開始で新しいプロジェクトがいっぱい出てくる予感




・・・monazillaとは関係ないところで・・・

440:デフォルトの名無しさん
06/05/09 21:44:21
t

441:デフォルトの名無しさん
06/05/16 18:20:34 BE:7466483-
monazillaを引き継いでみる。

442:デフォルトの名無しさん
06/05/16 18:41:41 BE:7466483-
monazillaプロジェクト+aの勢いで

443:デフォルトの名無しさん
06/05/16 18:45:14
>>66
いるYO!

444:デフォルトの名無しさん
06/05/16 21:43:14 BE:9955384-
名称は「Monazila Japan」に決定。

445:c⌒っミ `Д)っφ ◆CaKkuEV3EI
06/05/24 23:00:30 BE:2200872-#
monazilla
URLリンク(info.2ch.net)
ページが刷新しました。
スレリンク(operate板:134-番)n
スレリンク(operate板:72-番)n

従来のページはこちらに移動です。
monazilla/develop
URLリンク(info.2ch.net)

446:デフォルトの名無しさん
06/05/25 01:03:41
otu

447:デフォルトの名無しさん
06/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

URLリンク(age.s22.xrea.com)



2ちゃんのスレッドを取得するプログラムをC#で作ろうとしているんですが
ログを受信する際、こういったヘッダ情報は送信する必要はありますか?
以前試したテストプログラムではUser-AgentやAccept-Encodingは特に設定しなくても
問題なくデータが取得できてしまったんですが・・・

448:stream ◆PNstream2s
06/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
06/05/26 19:02:37
>>448
ご指摘ありがとうございます。

> C#って.NET2.0なら自動でgzipを展開してくれる機能があるから
> それを利用して2chの負担を減らそう。

C#でgzipの圧縮・解凍ができるとは知りませんでした(汗
早速調べてみます。

ところでgzipを使ったときもログの差分取得は可能でしょうか?
そもそもgzipを使ってログを圧縮しているなら、わざわざ差分取得しなくても
鯖には大した負担はかからないでしょうか?

450:デフォルトの名無しさん
06/05/26 19:10:24
今gzip圧縮ってしてるの?
転送量よりもCPU負荷の方を軽減したいって感じだったと思うけどうるおぼえ。

451:デフォルトの名無しさん
06/05/26 19:44:35
Content-RangeとAccept-Encoding:gzipを同時に指定すると、
httpの意味上からは、「gzip済みのdatファイル」の途中から
しか送ってくれないので役に立たない。

452:デフォルトの名無しさん
06/05/27 00:43:57
>>450
うろおぼえ が正しいんじゃなかったか?

>>451
初回だけgzipで取れって事?

453:447
06/05/27 00:54:09
>>451
その差分に関して何ですが、

URLリンク(age.s22.xrea.com)

によりますと、

 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("URLリンク(pc8.2ch.net)");

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:デフォルトの名無しさん
06/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
06/05/27 02:00:12
>>450
ほとんどの鯖でgzip圧縮してるよ

>>453
おかしいですねえ。

Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。

と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。

456:447
06/05/27 02:03:05
>>455
> おかしいですねえ。
> Headers プロパティは、WebClient が要求で送信するヘッダー情報を含む WebHeaderCollection インスタンスを格納します。これは無制限のヘッダーのコレクションであるため、HttpWebRequest などの WebRequest の子孫で制限されるヘッダーを設定できます。
> と書いてあるんですけど、例えばRangeヘッダーでも同じことが起こります。これは.NET Frameworkのバグな気がします。

そんなことがあるんですか(;´Д`)・・・

457:stream ◆PNstream2s
06/05/27 11:18:07
まあ、HttpWebRequest/HttpWebResponseを使えってことなんですかねえ。
If-Modified-Since にDateTime構造体を突っ込むことが出来たりするので
ちょっと手の込んだHTTPリクエストを行う場合はWebClientより便利だと思いますよ。

458:デフォルトの名無しさん
06/05/27 11:25:52
etag保存しといてif-none-matchを仕掛けた方がいいという話もある

459:stream ◆PNstream2s
06/05/27 16:31:16
新しい書き込みの仕様

レス
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
key= ←スレッドキー
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。


Cookieは不要。

460:stream ◆PNstream2s
06/05/27 16:35:43
スレ立て
subject= ←スレッドのタイトル
FROM= ←名前
mail= ←メール欄
MESSAGE= ←本文
bbs= ←板のディレクトリ名。operateとかtechとか
time= ←現在時刻より小さい値を適当に。1を送っておけばよい
hana=mogera ←追加。常にmogeraを送っとけばいいのかな。

461:stream ◆PNstream2s
06/05/27 16:36:37
Cookieは不要と書きましたが、sports2はCookie無しじゃ書けないので
Cookieも今までどおり必要ですね

462:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/05/27 17:33:44
クッキー認証、クッキーの必要なサーバーなら出る
sports鯖とかURLリンク(sports2.2ch.net)

スレリンク(tech板)

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
06/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:デフォルトの名無しさん
06/05/27 17:38:27
すまん、誤爆した

466:447
06/05/27 17:56:43
>>457
HttpWebResponse/HttpWebRequestを使ってみましたが↓
やはり"If-Modified-Since"のヘッダー情報を追加すると
エラーが生じますね・・・
.Netのバグではないような気もします・・・

//HttpWebRequestの作成
System.Net.HttpWebRequest webreq =
(System.Net.HttpWebRequest)
System.Net.WebRequest.Create("URLリンク(pc8.2ch.net)");

//サーバーからの応答を受信するための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
06/05/27 18:33:23
>>466
いや、HttpWebRequest/HttpWebResponseの場合はHeaders.Add("If-Modified-Since",○○)
ってやっちゃ駄目なのは仕様。IfModifiedSinceプロパティを使う。

んでWebClientはHeaders.Add("If-Modified-Since",○○)ってやっていいはずなんだけど
実際は出来ないからバグかもしれない、ってことです。

468:447
06/05/27 19:03:48
>>467
あ、そういうことでしたか。早速IfModifiedSinceプロパティを使わせていただきました。

System.Net.HttpWebRequest webreq =
(System.Net.HttpWebRequest)
System.Net.WebRequest.Create("URLリンク(pc8.2ch.net)");

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:デフォルトの名無しさん
06/05/27 20:45:54
すごい惨めな気持ちになったぞ!
どうしてくれる!

470:stream ◆PNstream2s
06/05/27 20:51:15
>>468
If-Modified-Since ヘッダって言うのは「この時間よりあとに未更新だったら送信しないでね」って意味だから
差分データを取得するにはさらに Range ヘッダを使わなければいけない。

HttpWebRequestの場合はAddRangeメソッドを使う。

471:デフォルトの名無しさん
06/05/27 20:52:26
>>468
> Range: bytes=ローカルDATのファイルサイズ-
はどこ行ったんだよ

472:デフォルトの名無しさん
06/05/27 20:52:46
かぶったorz

473:デフォルトの名無しさん
06/05/27 21:44:28
>>468
>関係ない話ですが、もし可能ならレス番号を指定してそれ移行のデータを要求できれば
>便利そうなんですが2ちゃんではそういうものには対応していないんですかね。

2000年8月危機の際にオープンソースとなり有志の手で改良された旧版 read.cgi には
raw モードとしてその機能が実装されたが、現在の read.cgi には実装されてない。

474:デフォルトの名無しさん
06/05/27 21:55:15
2001年ではなくて?

475:447
06/05/27 22:18:47
>>470-471
webreq.AddRange((int) fileSize);

と指定することで差分データ取得できました\(^o^)/
ちなみにIf-Modified-Sinceヘッダをつけてもつけなくても、
またでたらめな時間や未来の時間にしても取得する差分データ
に変わりはありません。AddRangeさえ指定すればIf-Modified-Sinceは
特に指定する必要は無いんでしょうか?

>>473
便利な機能は無くなってしまったんですか(´・ω・`)
あぼ〜んがあった場合などでも問題なく差分データを取得できると
思われるので重宝すると思うんですが・・・

476:デフォルトの名無しさん
06/05/27 22:23:43
鯖の方でいろいろやらなきゃいけないし、
FOXがコードをDSO向けにリファインした時に無くした予感

477:デフォルトの名無しさん
06/05/28 00:27:05
ハナモゲラ絶対必要なの?

478:デフォルトの名無しさん
06/05/28 06:48:32
あぼーんがあったときに、ローカルのデータを上書きしてくれるのでありがたい

479:デフォルトの名無しさん
06/05/28 13:48:42
例えばレス479まで取得しているスレでリロードすると、
479までのサイズでRange〜とするわけだけど、その時に
新規投稿が無かった場合、.datファイルにはRange〜で指定した
部分は存在しないので406エラーとなる。
そこで、If-Modified-Sinceを付ければ、新規投稿が無い時には
304 Not Modified で新規投稿が無いことがわかる。

406を新規投稿無しと解釈すれば良いじゃないか、とも思えるが、
レスが削除された場合等にも、.datファイルのサイズが既得分より
減って406が出うるので、それと区別ができなくなってしまう。

ブラウザを配布するとかではなくて、個人でどうにかしたいだけなら
お好みでどうぞ、とも言えるが。

480:447
06/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:デフォルトの名無しさん
06/05/28 16:18:35
あ、416だった(ハズイ

482:デフォルトの名無しさん
06/05/28 16:26:38
そっすね、全取得になるかと。
ブラウザとしてだと、自動再取得の前に、何が削除されたか
知っておきたい、という需要もあるけどね。

483:デフォルトの名無しさん
06/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
06/05/29 19:29:37
2ちゃんのスレッドを取得したときに考えられるケースとして、

a) 正常に取得
b) URLを間違えてしまった
c) すでに1000を超えていた
d) すでに過去ログとして倉庫落ちしてしまった
e) 人大杉

の5通りくらいあるかと思います。いずれも帰ってくるステータスコードは
200 HTTP_OKなんですがみなさんどうやってそれぞれのケースを判別されてますか?

485:デフォルトの名無しさん
06/05/29 20:25:21
それは、
本当は302が返っているのに、リダイレクトされているだけ

486:デフォルトの名無しさん
06/05/31 23:54:51
c)は違うだろ(まだdat落ちしてなければ)

487:stream ◆PNstream2s
06/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:デフォルトの名無しさん
06/06/03 19:46:04
URLリンク(jbbs.livedoor.jp)

したらばのdatってどう取得したらええんやろ(´・ω・`)?

489:stream ◆PNstream2s
06/06/03 20:17:03
ProxomitronとかEtherealとかつかって、既存の2chブラウザが何やっているかを把握すべし

490:デフォルトの名無しさん
06/06/03 22:35:17
>>488
> URLリンク(jbbs.livedoor.jp)

んなもん

URLリンク(jbbs.livedoor.jp)

とでもすればいいんじゃね〜か、と思っていたが意外と違うもんだな・・・

491:stream ◆PNstream2s
06/06/03 22:44:03
Jane Nida で確認してみた

URLリンク(jbbs.livedoor.jp)

レス番指定も
URLリンク(jbbs.livedoor.jp)

492:デフォルトの名無しさん
06/06/04 01:29:32
>>491
> レス番指定も
> URLリンク(jbbs.livedoor.jp)

うおっ!めちゃくちゃ便利じゃん♪
2ちゃんもしたらばみたいな方式だとありがたいんだが。

493:stream ◆PNstream2s
06/06/04 01:32:26
>>492
CGIが動く負荷とdatファイルを読み出す負荷は10〜100倍ぐらい違うんだよ

494:デフォルトの名無しさん
06/06/04 01:40:46
>>493
なるほど、2ちゃん規模の掲示板だと2ちゃん方式は必要悪というわけなのか。

495:デフォルトの名無しさん
06/06/04 03:05:00
因みに過去ログは
URLリンク(jbbs.shitaraba.com)

URLリンク(jbbs.livedoor.jp)

htmを自前でDatに変換ね

496:デフォルトの名無しさん
06/06/04 06:31:07
したらばはdat公開してないよ
IPとかもdatに保存してあるから

497:デフォルトの名無しさん
06/06/04 15:09:36
> IPとかもdatに保存してあるから

((((((;゚Д゚))))))ガクガクブルブル

498:デフォルトの名無しさん
06/06/05 00:08:49
そんなに怖がることはないだろ

499:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/06/07 03:05:38
HTTP/1.1?

501:デフォルトの名無しさん
06/06/07 03:11:40
news2?

502:stream ◆PNstream2s
06/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
06/06/09 03:18:20
>>499はと〜く2ちゃんねるのをコピペしただけなので、
実際には運営情報板とかでテストしてます。

>>502
おお、telnetで試してみたらgzipで返ってきました。
でも、全く同じメッセージ送ってみてもWinsock(2.0)使った
自作プログラムではプレーンテキストが返ってくる。
う〜ん、何が違うんだろう。


504:デフォルトの名無しさん
06/06/21 16:52:14
> User-Agent: Monazilla/1.00

ヘッダーにこの情報を記述しなくてもDATが取得できたんだけど
これっておまじない程度のものなの?

505:デフォルトの名無しさん
06/06/22 04:40:05
過去ログにさんざん書かれてますよ。

506:デフォルトの名無しさん
06/06/22 10:13:56
おなじないって言ってるうちは理解できてないってことだな

507:デフォルトの名無しさん
06/06/22 11:53:35
おなじない・・・・

508:デフォルトの名無しさん
06/06/22 12:46:30
おなじないヽ(`Д´)ノウワァァン

509:デフォルトの名無しさん
06/06/22 13:20:14
かくごしろ

510:504
06/06/27 22:58:57
う〜ん・・・
特にいらないのか( ´・ω・)・・・

511:デフォルトの名無しさん
06/06/28 01:52:17
そういえば、NISかなんかがgzipを無効にするとかいうのもあったっけなー。

512:デフォルトの名無しさん
06/07/01 20:29:40
Delphi6+Indyで簡易2chブラウザを作っています。
読み、書きはできるようになりましたが、●が書き込みに反映されません。

ちなみに認証方法はURLリンク(kage.monazilla.org)を参考にして、
セッションIDを取得するところまではできています。

・セッションIDの取り出し
IdHTTP1.AllowCookies := False;
IdHTTP1.Request.UserAgent := 'DOLIB/1.00';
IdHTTP1.Request.RawHeaders.Add('X-2ch-UA:'+Myname);
IdHTTP1.Request.Connection := 'close';
Contents.Text:='ID='+LGId+'&PW='+LGPas;
Respons:=IdHTTP1.Post(url, Contents);
Sid := Copy(Respons,pos('=',Respons)+1,length(Respons));
//showmessage(Respons);で'SESSION-ID=Monazilla/1.00:〜〜〜'という文字列が表示されます。
//showmessage(Sid);では'Monazilla/1.00:〜〜〜'
//一番最後の文字は非改行文字であることを確認>>95

・書き込み時postするデータ
IdHTTP1.Request.Referer := SavUrl+ItaUrl;
IdHTTP1.Request.UserAgent := copy(Sid,1,pos(':',Sid)-1) +' ('+Myname+')';
Contents.Text:='bbs='+Ita+'&key='+Key+'&sid='+Sid
+'&time=1&hana=mogera&submit=書き込む&FROM='
+Name+'&mail='+Mail+'&MESSAGE='+Honbun;
Result:=IdHTTP1.Post(url, Contents);

書き込み自体はこれで成功しています。

513:デフォルトの名無しさん
06/07/01 20:44:20
Indyのことはわからないから的外れな事いってたら悪いんだけど
URLエンコードはされてる?

514:512
06/07/01 21:15:02
すみません。>>95を見て
Sid := Copy(Respons,pos('=',Respons)+1,length(Respons));

tmp1 := pos('=',Respons)+1;
Sid := Copy(Respons,tmp1,length(Respons)-tmp1);
に変えたのを忘れていました。それでも症状は変わらずです。

>>513
indyの内部で行われているようです。
名前欄の●が○になる以外で書き込んだ内容は正常に反映されていますし。

515:デフォルトの名無しさん
06/07/01 22:35:13
確かSID末尾の改行がどうのというところで引っかかっていた人が過去に居たような。

516:デフォルトの名無しさん
06/07/01 23:53:56
>>512
>>514
Proxomitronとか、あるいはetherealを使って
流れているデータを見るのが解決の近道

517:512
06/07/02 04:16:31
で、でけたー
Indyのエンコード部分がいろいろとおかしいようなので封印して自前でURLエンコードしたら反映されました
>>513>>515大変参考になりました。ありがとうございます。

518:デフォルトの名無しさん
06/08/10 20:05:03
ひどい過疎

519:デフォルトの名無しさん
06/08/12 23:49:35
見舞われましたwwwwwwwwwwwwwwwwwwwwww

520:デフォルトの名無しさん
06/08/16 17:04:57
IEコンポーネントはVistaでも正常動作するか確認情報ってある?
使ってる人は少なくないと思うがそれらしい話を全く聞かないもんで

521:デフォルトの名無しさん
06/08/27 15:14:42
monazilla.org ってどうして更新されなくなってしまったの?

522:デフォルトの名無しさん
06/08/30 01:33:58
read.cgi 2006―JavaScriptはCGIの夢を見るか
スレリンク(operate板:749-番)

まだまだ実験中のやつだけど、ステータスコードが色々ですよ。
302しか想定してないブラが多かったと思うけど、404くらいには対応した方が
この先も色々慌てなくて良いかもよ。

523:デフォルトの名無しさん
06/08/30 22:27:23
ステータスが 302 Found → 302 Moved Temporarily になっただけでまともに動かなくなったブラウザもあったぐらいだし
2chブラウザ作者は少しはHTTPを知っててほしい

524:デフォルトの名無しさん
06/08/31 13:51:50
実装が面倒

525:デフォルトの名無しさん
06/08/31 20:58:22
2ch専用なのにHTTPに準拠する必要はない
速度やサイズや生産性が悪化するだけ

526:デフォルトの名無しさん
06/08/31 21:57:59
あとリロードのたびに1バイト読み取るバカ2chブラウザは何とかならないのかね

527:デフォルトの名無しさん
06/09/01 01:14:42
>>525
そんな糞プログラムが氾濫してるのか
知らなかった

528:デフォルトの名無しさん
06/09/01 04:35:13
2chという糞に合わせなきゃならんからな。
現実はたいへんなのよ。夢だけ語ってたら2chやれませんw

529:デフォルトの名無しさん
06/09/01 13:38:47
2chといえどもhttpの上に成り立ってるんじゃないのか

530:デフォルトの名無しさん
06/09/01 13:42:22
ただ人大杉とかdat落ちしたとかのエラーは独自だからね。
フォーマットも統一されてないし。

531:デフォルトの名無しさん
06/09/01 17:05:45
>>529
それがどうかしたかね。

532:デフォルトの名無しさん
06/09/01 20:25:29
>>529
少なくとも昔は違った
今は知らん

533:デフォルトの名無しさん
06/09/01 20:30:30
>>532
デマ流すな

で、普通の「まっとうな」2chブラウザは、
2chだけでなく、外部の実況板等の互換板にちゃんと対応している。
それは当然、httpに則っているということ。
もちろん302ではなく404を返すようになっても全然問題ない。

「httpに準拠しなくて良い」なんて書いてるのは
まともな2chブラウザを作ろうとしたことも無い奴のたわごとだから。

534:デフォルトの名無しさん
06/09/01 20:39:54
wikipediaより
>準拠(じゅんきょ)とは、合致はしていないが、概ね(準)よりどころとしている事(拠)。

そういうことなら同意するよ

535:デフォルトの名無しさん
06/09/01 21:13:46
あんた、おふらうって知ってるかい?

536:デフォルトの名無しさん
06/09/01 21:18:45
2chがさくらとかのレン鯖(と一部ひろゆき自宅)で運営されていた時代を知らないで
「昔」を語られても困るわけですが、
レン鯖がhttp以外で運用されていたとでも思っているのですかね。

まさかhttpとHTMLを混同するわけないし。

537:デフォルトの名無しさん
06/09/01 21:22:39
独り言をこんなところに貼られても困る

538:デフォルトの名無しさん
06/09/01 21:28:54
まあ、まともな人はちゃんと作ってるから問題ないしね。
まともじゃない人が適当なこと(httpじゃないとか昔は違ったとか)言ってるだけだから。

539:デフォルトの名無しさん
06/09/01 22:56:53
httpじゃないというのならdatはどうやって取得しているのか知りたいものだな。。。

540:デフォルトの名無しさん
06/09/01 23:05:00
話が食い違ってるな
HTTPをちゃんと実装することと
HTTPを利用してることは全然違うぞ

541:デフォルトの名無しさん
06/09/01 23:36:42
2chがHTTPをちゃんと実装してるかって話?
そりゃ、そんなわけないだろ。
2chはapacheを使っているだけで、
httpを実装しているのはapache.orgなんだから。

「2chはhttpじゃない」「昔は違った」なんて話は
どう見ても「クライアント側がhttpをちゃんと処理しているか」とは
なんの関係も無いし。

542:デフォルトの名無しさん
06/09/02 13:07:11
おまいらどう見てもhttpとHTML誤記した>>525に食いつきすぎですw

543:デフォルトの名無しさん
06/09/02 13:15:36
>>523
Live2chか
今は知らんが、あのブラウザは当時
>「302 Moved Tem,prarily」でもdat落ちと判断するようにした
って対応して、rootが「数字だけで判断するべきかと・・・」ってあきれてた

544:デフォルトの名無しさん
06/09/02 16:18:07
>>542
なんだってー

545:デフォルトの名無しさん
06/09/02 16:24:14
>>542
水さすんじゃねーw

546:デフォルトの名無しさん
06/09/04 08:25:08
BBSPINKのフォルダ分けってどうやればいいの?

547:デフォルトの名無しさん
06/09/07 12:28:43
そういえばソフトウェア板のブラウザ比較スレで新ブラウザあがってたな

548:デフォルトの名無しさん
06/10/13 19:41:52
再開だそうです。

URLリンク(monazilla.org)


549:デフォルトの名無しさん
06/10/13 19:42:15
一応、上げときます。

550:デフォルトの名無しさん
06/10/13 20:11:59
なんで今更ww

551:デフォルトの名無しさん
06/10/13 22:08:13
これのパクりだろ
URLリンク(mac2ch.blog10.fc2.com)

552:デフォルトの名無しさん
06/10/16 21:24:31
safariのRSS機能で見ようとするとsafariが固まるんだが……

553:デフォルトの名無しさん
06/10/16 21:26:09
あ、>548のアドレスがserver.maido3.comに飛ばされるからだ
スレ汚しスマンコ

554:デフォルトの名無しさん
06/10/16 21:38:38
URLリンク(monazilla.org)
へ移動してたっぽい。

■ Monazilla(モナジラ)の逆襲
スレリンク(operate板)l50

何度もごめんね。
フロはいってうんこして寝て夢精する。
おやすみ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4235日前に更新/226 KB
担当:undef