専ブラ開発への道
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*2chの色々なこと [#t1c26a5b]
________
<○√ <しまった、ここは糞ページだ!
∥ オレが止めているうちに他サイトへ逃げろ!
くく 早く!早く!オレに構わず逃げろ!
-http://age.s22.xrea.com/talk2ch/
-http://info.2ch.net/wiki/index.php?monazilla%2Fdevelop
-http://www.monazilla.org/
~~
#contents
**掲示板サーバの中身 [#m55701a5]
2chの掲示板鯖の基本的なファイル配置はこうなっています(外...
yutori7.2ch.net
|
|──news4vip(言わずと知れたニュー速VIP)
| |──index.html(IEで板を開いたときに出てきます)
| |──subject.txt(生きているスレのスレタイとス...
| |──subback.html(↑と内容は同じ。形式が違う)
| |──setting.txt(板の設定値(板名とか、本文の...
| |──1001.txt(1001の内容っす)
| |──head.txt(ローカルルールの原本がここに)
| |──dat(生きているスレのdatが入っとります)
| | |──1172740677.dat
| | |──1172766831.dat
| | |──1172832524.dat
| | | ・
| | | ・
| | | ・
| |
| |
| └──kako(過去ログがたんまりと。面倒だから説明...
|
|──news4plus(東亜+)
|
|──yutori7tr(ゴミ箱)
| ・
| ・
| ・
|
|──_service
| |
| |──bbslist.txt(その鯖の板一覧が入ってます)
| |──数字八桁.txt(10分毎のLAが見れます)
| |──PV数字八桁.txt(1時間毎のPVが見れます。http:...
| └──IPnum-(ry.txt(規制関連のデータだったと思い...
|
|
|
└──test
|──bbs.cgi(レスとスレ立てに使います)
|──read.cgi(datフォルダのdatをhtmlに整形して...
|──read.html(↑と同じ動作をするjavascriptが含...
|──offlaw.cgi(dat落ちしたスレを取得する際に使...
|──subbbs.cgi(スレ立てに使ってましたが、現在...
|──r.i(携帯でのアクセスに使ってましたが、現在...
|──p.i(携(ry現(ry)
|──headad.txt
|──putad.txt
|──bbs-yakin.cgi
|──flash.txt
└aho┬gonta_oxy.cgi
└gonta893.cgi
**鯖リスト [#fe979f22]
2chのボランティアである[[root★氏のサイト:http://mumumu.mu...
もしくは、[[2chの板リスト:http://www.2ch.net/bbsmenu.html...
**スレの読み方 [#o6b1ada6]
read.cgiを叩かずに、datを直読みしましょう。
datは2008年現在、~
1行目が、
名前<>メール欄<>年/月/日(曜) 時:分:秒.下二桁(無い板も...
2行目以降が、
名前<>メール欄<>年/月/日(曜) 時:分:秒.下二桁(無い板も...
の形で記録されています。~
本文内では、<>"がエスケープされて、改行は<br>であらわされ...
HTTPでのリクエストの方法は、
GET /news4vip/dat/11111111111.dat HTTP/1.0
Host: takeshima.2ch.net
User-Agent: Monazilla/1.00
Connection: close
(空行!)
こんな感じです。&br;
余裕が有るなら、下の方で書いてある差分取得も実装しましょ...
**bbs.cgiの叩き方 [#adb49020]
[[と~く2ちゃんねるさん:http://age.s22.xrea.com/talk2ch/...
許可とか取ったほうが良いかな……?
とりあえずHTTPリクエストの例(VIPのhttp://yutori.2ch.net/...
名前欄はデフォ、目欄はsageでhogehogeと書き込みます)
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: takeshima.2ch.net
Content-length: 95
Referer: http://takeshima.2ch.net/news4vip/
User-Agent: Monazilla/1.00
Connection: close
bbs=news4vip&key=1217356258&time=1&submit=書き込む&FROM=...
詳細は、後述の「簡単なまとめ」を見てください。&br;
で、こんな感じでポストすると…
HTTP/1.1 200 OK
Date: Wed, 30 Jul 2008 12:25:17 GMT
Server: Apache/2.0 .59 (Unix) PHP/5 .2.5 mod_ssl/2.0 .59...
Set-Cookie: PON=hogehoge; expires=Friday, 01-Jan-2010 00...
Set-Cookie: HAP=fugafuga; expires=Friday, 01-Jan-2010 00...
Vary: Accept-Encoding
Content-Length: 1076
Connection: close
Content-Type: text/html
以下略
こんな感じのが帰ってきます。&br;
重要なのはここ&br;
>Set-Cookie: PON=hogehoge; expires= Friday, 01-Jan-2 010...
PON=の後には自分のホスト名が入っています。&br;
んで、この帰ってきたPON以下を、
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: takeshima.2ch.net
Content-length: 111
Cookie: PON=hogehoge;HAP=fugafuga
Referer: http://takeshima.2ch.net/test/bbs.cgi?guid=ON
User-Agent: Monazilla/1.00
Connection: close
bbs=news4vip&key=1217356258&time=1&submit=上記全てを承諾...
こんな風に組み入れて再度POSTすれば書き込めます。&br;
自分のIPが変わるまではCookieの中身を流用できます。&br;
IPが変わったら再度Set-Cookieヘッダが付いてきます。&br;
Set-Cookie:の内容を単純に全部組み込んでも構いません。↓
Content-length: 161
Cookie: PON=hogehoge; expires=Friday, 01-Jan-2010 00:00:...
Cookie: HAP=fugafuga; expires=Friday, 01-Jan-2010 00:00:...
Referer: http://yutori.2ch.net/news4vip/
***簡単にまとめ [#p430350e]
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: 書き込みたい板のある鯖(namidame.2ch.net等)
Content-length: ポストするデータのサイズ(バイト)
Referer: 書き込みたい板のURL(http://namidame.2ch.net/ne...
User-Agent: Monazilla/1.00(ここは慣例)
Cookie: NAME=名前; MAIL=メール; SPID(PON)=値; expires=有...
Connection: close(1回の送受信で切断するという意味)
(ここは改行)
bbs=板名&key=スレッド番号(スレが立った瞬間のUNIXTIME)&...
(もう一度改行)
書き忘れてましたが、名前欄の内容、目欄の内容、本文の内容...
そしてsubmit=「書き込む」はちゃんとURLエンコードしてくだ...
20090108追記:ちなみに、Hostヘッダにポート番号を指定しち...
ConnectionはKeep-Aliveが有効な鯖とそうでない鯖が混在して...
**鯖にやさしい漢になろう [#m607d19c]
鯖の負荷、転送量を考えたコーディングを行いましょう。&br;
例を挙げますと、&br;
・連続更新の自主規制&br;
・差分取得の実装&br;
・gzip圧縮への対応&br;
等になります。&br;
***連続更新の自主規制 [#j83e6aab]
読んだまんまです。&br;
Janestyle等では、同時にアクセスできるスレッドがデフォルト...
3秒待たないと同じスレッドを更新できないようになっています...
俺しか使わねーから良いじゃんwwwwと思ってる人も、&br;
リロードバーボンが実装されましたので、アクセスしすぎると[...
***差分取得 [#wc9b2266]
これは、datをリクエストする時、HTTPヘッダに「If-Modified-...
更新が無い時には再受信せず、更新があるときでも前回読み込...
例えば、前回の受信日時が2008/7/30 12:12:12で、&br;
スレッドを3050バイトまで受信したときは、
If-Modified-Since: Wed, 30 Jul 2008 12:12:12 GMT
Range: bytes=3050-
という二行を足してやればおkです。&br;
このとき、If-Modified-Since:の右側には前回取得した時の
Last-Modified: Wed, 30 Jul 2008 12:12:12 GMT
の右側をそのまま与えてください。&br;
更新が無かった場合は304 Not Modifiedが返ってきます。
またこの手法を使う際は更新があったか無かったかの他に、あ...
方法は色々ありますが、個人的にはRangeヘッダには前回受信し...
新しく受信したデータが改行コードから始まっているかどうか...
なお、あぼんによってサイズが減っている場合は
416 Requested Range Not Satisfiable
が返ってきますので、全部取得しなおしてください。
***gzip圧縮への対応 [#g44b3eae]
datにアクセスするときに、
Accept-Encoding: gzip
をヘッダに加えます。すると
Content-Encoding: gzip
というヘッダーが返って来て、datが gzip圧縮された状態で返...
そのままパイプか何かでgzipに流すかzlib等を使って解凍する...
必ずしも圧縮されて返ってくるわけではない(差分取得の時等...
*開発言語 [#hb76bf56]
154 名前:以下、名無しにかわりましてVIPがお送りします...
専用ブラ作りたい場合はどの言語がいいの?
156 名前:以下、名無しにかわりましてVIPがお送りします...
twintail…C♯
V2C…Java
Jane系…Delphi
かちゅーしゃ…C(転載注:Delphiです)
160 名前:以下、名無しにかわりましてVIPがお送りします...
Live2ch…VB
p2/rep2…PHP
Delphiは個人的に将来性が若干怪しい気が…(ただし開発元はや...
↑自己解決、JaneLovely(開発停止)の作者がやってたけどお察...
終了行:
*2chの色々なこと [#t1c26a5b]
________
<○√ <しまった、ここは糞ページだ!
∥ オレが止めているうちに他サイトへ逃げろ!
くく 早く!早く!オレに構わず逃げろ!
-http://age.s22.xrea.com/talk2ch/
-http://info.2ch.net/wiki/index.php?monazilla%2Fdevelop
-http://www.monazilla.org/
~~
#contents
**掲示板サーバの中身 [#m55701a5]
2chの掲示板鯖の基本的なファイル配置はこうなっています(外...
yutori7.2ch.net
|
|──news4vip(言わずと知れたニュー速VIP)
| |──index.html(IEで板を開いたときに出てきます)
| |──subject.txt(生きているスレのスレタイとス...
| |──subback.html(↑と内容は同じ。形式が違う)
| |──setting.txt(板の設定値(板名とか、本文の...
| |──1001.txt(1001の内容っす)
| |──head.txt(ローカルルールの原本がここに)
| |──dat(生きているスレのdatが入っとります)
| | |──1172740677.dat
| | |──1172766831.dat
| | |──1172832524.dat
| | | ・
| | | ・
| | | ・
| |
| |
| └──kako(過去ログがたんまりと。面倒だから説明...
|
|──news4plus(東亜+)
|
|──yutori7tr(ゴミ箱)
| ・
| ・
| ・
|
|──_service
| |
| |──bbslist.txt(その鯖の板一覧が入ってます)
| |──数字八桁.txt(10分毎のLAが見れます)
| |──PV数字八桁.txt(1時間毎のPVが見れます。http:...
| └──IPnum-(ry.txt(規制関連のデータだったと思い...
|
|
|
└──test
|──bbs.cgi(レスとスレ立てに使います)
|──read.cgi(datフォルダのdatをhtmlに整形して...
|──read.html(↑と同じ動作をするjavascriptが含...
|──offlaw.cgi(dat落ちしたスレを取得する際に使...
|──subbbs.cgi(スレ立てに使ってましたが、現在...
|──r.i(携帯でのアクセスに使ってましたが、現在...
|──p.i(携(ry現(ry)
|──headad.txt
|──putad.txt
|──bbs-yakin.cgi
|──flash.txt
└aho┬gonta_oxy.cgi
└gonta893.cgi
**鯖リスト [#fe979f22]
2chのボランティアである[[root★氏のサイト:http://mumumu.mu...
もしくは、[[2chの板リスト:http://www.2ch.net/bbsmenu.html...
**スレの読み方 [#o6b1ada6]
read.cgiを叩かずに、datを直読みしましょう。
datは2008年現在、~
1行目が、
名前<>メール欄<>年/月/日(曜) 時:分:秒.下二桁(無い板も...
2行目以降が、
名前<>メール欄<>年/月/日(曜) 時:分:秒.下二桁(無い板も...
の形で記録されています。~
本文内では、<>"がエスケープされて、改行は<br>であらわされ...
HTTPでのリクエストの方法は、
GET /news4vip/dat/11111111111.dat HTTP/1.0
Host: takeshima.2ch.net
User-Agent: Monazilla/1.00
Connection: close
(空行!)
こんな感じです。&br;
余裕が有るなら、下の方で書いてある差分取得も実装しましょ...
**bbs.cgiの叩き方 [#adb49020]
[[と~く2ちゃんねるさん:http://age.s22.xrea.com/talk2ch/...
許可とか取ったほうが良いかな……?
とりあえずHTTPリクエストの例(VIPのhttp://yutori.2ch.net/...
名前欄はデフォ、目欄はsageでhogehogeと書き込みます)
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: takeshima.2ch.net
Content-length: 95
Referer: http://takeshima.2ch.net/news4vip/
User-Agent: Monazilla/1.00
Connection: close
bbs=news4vip&key=1217356258&time=1&submit=書き込む&FROM=...
詳細は、後述の「簡単なまとめ」を見てください。&br;
で、こんな感じでポストすると…
HTTP/1.1 200 OK
Date: Wed, 30 Jul 2008 12:25:17 GMT
Server: Apache/2.0 .59 (Unix) PHP/5 .2.5 mod_ssl/2.0 .59...
Set-Cookie: PON=hogehoge; expires=Friday, 01-Jan-2010 00...
Set-Cookie: HAP=fugafuga; expires=Friday, 01-Jan-2010 00...
Vary: Accept-Encoding
Content-Length: 1076
Connection: close
Content-Type: text/html
以下略
こんな感じのが帰ってきます。&br;
重要なのはここ&br;
>Set-Cookie: PON=hogehoge; expires= Friday, 01-Jan-2 010...
PON=の後には自分のホスト名が入っています。&br;
んで、この帰ってきたPON以下を、
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: takeshima.2ch.net
Content-length: 111
Cookie: PON=hogehoge;HAP=fugafuga
Referer: http://takeshima.2ch.net/test/bbs.cgi?guid=ON
User-Agent: Monazilla/1.00
Connection: close
bbs=news4vip&key=1217356258&time=1&submit=上記全てを承諾...
こんな風に組み入れて再度POSTすれば書き込めます。&br;
自分のIPが変わるまではCookieの中身を流用できます。&br;
IPが変わったら再度Set-Cookieヘッダが付いてきます。&br;
Set-Cookie:の内容を単純に全部組み込んでも構いません。↓
Content-length: 161
Cookie: PON=hogehoge; expires=Friday, 01-Jan-2010 00:00:...
Cookie: HAP=fugafuga; expires=Friday, 01-Jan-2010 00:00:...
Referer: http://yutori.2ch.net/news4vip/
***簡単にまとめ [#p430350e]
POST /test/bbs.cgi?guid=ON HTTP/1.1
Host: 書き込みたい板のある鯖(namidame.2ch.net等)
Content-length: ポストするデータのサイズ(バイト)
Referer: 書き込みたい板のURL(http://namidame.2ch.net/ne...
User-Agent: Monazilla/1.00(ここは慣例)
Cookie: NAME=名前; MAIL=メール; SPID(PON)=値; expires=有...
Connection: close(1回の送受信で切断するという意味)
(ここは改行)
bbs=板名&key=スレッド番号(スレが立った瞬間のUNIXTIME)&...
(もう一度改行)
書き忘れてましたが、名前欄の内容、目欄の内容、本文の内容...
そしてsubmit=「書き込む」はちゃんとURLエンコードしてくだ...
20090108追記:ちなみに、Hostヘッダにポート番号を指定しち...
ConnectionはKeep-Aliveが有効な鯖とそうでない鯖が混在して...
**鯖にやさしい漢になろう [#m607d19c]
鯖の負荷、転送量を考えたコーディングを行いましょう。&br;
例を挙げますと、&br;
・連続更新の自主規制&br;
・差分取得の実装&br;
・gzip圧縮への対応&br;
等になります。&br;
***連続更新の自主規制 [#j83e6aab]
読んだまんまです。&br;
Janestyle等では、同時にアクセスできるスレッドがデフォルト...
3秒待たないと同じスレッドを更新できないようになっています...
俺しか使わねーから良いじゃんwwwwと思ってる人も、&br;
リロードバーボンが実装されましたので、アクセスしすぎると[...
***差分取得 [#wc9b2266]
これは、datをリクエストする時、HTTPヘッダに「If-Modified-...
更新が無い時には再受信せず、更新があるときでも前回読み込...
例えば、前回の受信日時が2008/7/30 12:12:12で、&br;
スレッドを3050バイトまで受信したときは、
If-Modified-Since: Wed, 30 Jul 2008 12:12:12 GMT
Range: bytes=3050-
という二行を足してやればおkです。&br;
このとき、If-Modified-Since:の右側には前回取得した時の
Last-Modified: Wed, 30 Jul 2008 12:12:12 GMT
の右側をそのまま与えてください。&br;
更新が無かった場合は304 Not Modifiedが返ってきます。
またこの手法を使う際は更新があったか無かったかの他に、あ...
方法は色々ありますが、個人的にはRangeヘッダには前回受信し...
新しく受信したデータが改行コードから始まっているかどうか...
なお、あぼんによってサイズが減っている場合は
416 Requested Range Not Satisfiable
が返ってきますので、全部取得しなおしてください。
***gzip圧縮への対応 [#g44b3eae]
datにアクセスするときに、
Accept-Encoding: gzip
をヘッダに加えます。すると
Content-Encoding: gzip
というヘッダーが返って来て、datが gzip圧縮された状態で返...
そのままパイプか何かでgzipに流すかzlib等を使って解凍する...
必ずしも圧縮されて返ってくるわけではない(差分取得の時等...
*開発言語 [#hb76bf56]
154 名前:以下、名無しにかわりましてVIPがお送りします...
専用ブラ作りたい場合はどの言語がいいの?
156 名前:以下、名無しにかわりましてVIPがお送りします...
twintail…C♯
V2C…Java
Jane系…Delphi
かちゅーしゃ…C(転載注:Delphiです)
160 名前:以下、名無しにかわりましてVIPがお送りします...
Live2ch…VB
p2/rep2…PHP
Delphiは個人的に将来性が若干怪しい気が…(ただし開発元はや...
↑自己解決、JaneLovely(開発停止)の作者がやってたけどお察...
ページ名: