■MENU■
■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   
<<前月 2010年09月 次月>>
■NEW ENTRIES■
■CATEGORIES■
■ARCHIVES■
■ABOUT MONAZILLA■
monazilla は巨大掲示板「2ちゃんねる」用のブラウザ開発を応援するプロジェクトです。
■POWERED BY■
BLOGN(ぶろぐん)
BLOGNPLUS(ぶろぐん+)
■OTHER■

URLオプション
2ちゃんねるのURLにオプションを付けると一部のレスだけが表示されます。

http://[サーバー]/test/read.cgi/[板名]/[スレッド番号]/[オプション]

・数字
一致する番号のレスだけ表示する

・数字A-数字B
数字Aから数字Bまでのレスを表示する(レス1も表示)

・数字-
数字以降のレスを表示する(レス1も表示)

・-数字
1から数字までのレスを表示する(レス1も表示)

・l数字
指定件数の最新レスを表示する(レス1も表示)

・n
1を除外する

これらは組み合わせて使用できます。
http://gimpo.2ch.net/test/read.cgi/namazuplus/1227667151/nl3

2ちゃんねるブラウザを開発する際、アドレスがオプション付きで入力される可能性を考慮しましょう。

| 運営情報::資料室詳細 | 11:55 PM | comments (x) | trackback (x) |
2ちゃんねるビューアの仕様
はじめにDOLIB 1.00 の仕様をご覧下さい。
これは2ちゃんねるビューア●用に作成されたプラグインの仕様です。

●購入時に登録したメールアドレスと発行されたパスワードで認証サーバーにアクセスします。
(OpenSSL・接続先ポート番号443)

要求メッセージの一例(セッションID取得時)
POST /futen.cgi HTTP/1.1
Host: 2chv.tora3.net
Accept: */*
Referer: https://2chv.tora3.net/
Accept-Language: ja
User-Agent: DOLIB/1.00
X-2ch-UA: ブラウザ名/バージョン
Content-Length: ポストするデータの合計サイズ(バイト)
Connection: close

ID=メール&PW=パスワード
POST /futen.cgi HTTP/1.1
Host: 2chv.tora3.net
Accept: */*
Referer: https://2chv.tora3.net/
Accept-Language: ja
User-Agent: DOLIB/1.00
X-2ch-UA: monaweb/1.00
Content-Length: 26
Connection: close

ID=mail@aaa.jp&PW=password

サーバーからセッションIDが返ります。

応答ヘッダの一例(セッションID取得時)
HTTP/1.1 200 OK
Date: Tue, 30 Dec 2008 14:43:51 GMT
Server: Apache/2.0.49 (Unix) PHP/4.3.6 mod_ssl/2.0.49 OpenSSL/0.9.7c-p1
User-Agent: Monazilla/1.00
Transfer-Encoding: chunked
Content-Type: text/plain

SESSION-ID=Monazilla/1.00:Xw1:e=AbPnkayv*dvnH+p8t*,_6YPT:SsA=PfZ!EyB1

セッションID末尾の改行コード(n)は除外し、エンコードしておきましょう。
書き込みに●を使用する場合、メッセージボディにセッションIDを付加します。

要求メッセージの一例(書き込み時)
POST /test/bbs.cgi HTTP/1.1
Host: [サーバー]
Accept: */*
Referer: http://[サーバー]/test/read.cgi/[板名]/[スレッド番号]/
Accept-Language: ja
User-Agent: Monazilla/1.00 (ブラウザ名/バージョン)
Content-Length: ポストするデータの合計サイズ(バイト)
Connection: close

bbs=[板名]&key=[スレッド番号]&time=[投稿時間]&FROM=[名前]&mail=[メール]&MESSAGE=[本文]&submit=[ボタンの文字]
&sid=[セッションID]
POST /test/bbs.cgi HTTP/1.1
Host: gimpo.2ch.net
Accept: */*
Referer: http://gimpo.2ch.net/test/read.cgi/maru/1225807868/
Accept-Language: ja
User-Agent: Monazilla/1.00 (monaweb/1.00)
Content-Length: 168
Connection: close

bbs=maru&key=1225807868&time=1230638176&FROM=&mail=sage&MESSAGE=%82%C4&submit=%8F%91%82%AB%8D%9E%82%DE
&sid=Xw1%3ae%3dAbPnkayv%2advnH%2bp8t%2a%2c_6YPT%3aSsA%3dPfZ%21EyB1

dat落ちスレッドの取得に●を使用する場合、パスにofflaw.cgiを指定します。
パスの後ろにはraw=0.0とセッションIDを付加します。

要求メッセージの一例
GET /test/offlaw.cgi/[板名]/[スレッド番号]/?raw=0.0&sid=[セッションID] HTTP/1.1
Accept-Encoding: gzip
Host: [サーバー]
Accept: */*
Referer: http://[サーバー]/test/read.cgi/[板名]/[スレッド番号]/
Accept-Language: ja
User-Agent: Monazilla/1.00 (ブラウザ名/バージョン)
Connection: close
GET /test/offlaw.cgi/namazuplus/1230058090/?raw=0.0&sid=&sid=Xw1%3ae%3dAbPnkayv%2advnH%2bp8t%2a%2c_6YPT%3aSsA%3dPfZ%21EyB1 HTTP/1.1
Accept-Encoding: gzip
Host: gimpo.2ch.net
Accept: */*
Referer: http://gimpo.2ch.net/test/read.cgi/namazuplus/1230058090/
Accept-Language: ja
User-Agent: Monazilla/1.00 (monaweb/1.00)
Connection: close



| 運営情報::資料室詳細 | 02:46 AM | comments (x) | trackback (x) |
廃止になった機能
・read.cgiのrawモード・QUERY_STRING形式オプションは廃止になりました。

| 運営情報::資料室詳細 | 08:39 PM | comments (x) | trackback (x) |
設定情報のアドレス
【ローカルルール】
・ローカルルールの設置場所は次の通りです。
http://[サーバー]/[板名]/head.txt

【板設定情報】
・板設定情報の設置場所は次の通りです。
http://[サーバー]/[板名]/SETTING.txt
(各項目の意味はSETTING.TXT解読シヨウーヨをご覧下さい。)

【負荷率情報】
・負荷率情報の設置場所は次の通りです。
http://[サーバー]/_service/


| 運営情報::資料室詳細 | 08:25 PM | comments (x) | trackback (x) |
関連キーワードの表示
・getf.cgiを呼び出すことで2ちゃんねるブラウザにも関連キーワードが表示できます。

表示例
キーワード【 テスト tesuto サクセス test Monazilla Windows Mozilla
702:動け動けウゴウゴ2ちゃんねる :2008/12/12(金) 07:26:19 ID:ujl722EP0
てすと
703:動け動けウゴウゴ2ちゃんねる :2008/12/12(金) 07:35:04 ID:ujl722EP0
>>1
704:動け動けウゴウゴ2ちゃんねる :2008/12/12(金) 07:38:57 ID:UejhObsW0
>>1-2

・実行方法は二つありますが、キーワードが10件拾えることとLast-Modifiedが使えることからJavaScript版がお勧めです。

(1)HTML形式で出力(サーバー側でランダム表示・Last-Modifiedなし)
http://p2.2ch.io/getf.cgi?http://[サーバー]/test/read.cgi/[板名]/[スレッド番号]/

実行結果
<?xml version="1.0" encoding="Shift_JIS"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"><head><meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" /><title>キーワード</title><script type="text/javascript" defer="defer">//<![CDATA[onload = function(e) { for (var i = 0; i < document.links.length; i++) document.links[i].target = "_blank";};//]]></script><style type="text/css">/*<![CDATA[*/html { border: 0; overflow: hidden; }body { background-color: transparent; font-size: 13px; width: 460px; height: 15px; margin: 0; }/*]]>*/</style></head><body><div>キーワード【<a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=%83e%83X%83g">テスト</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=tesuto">tesuto</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=%83T%83N%83Z%83X">サクセス</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=test">test</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=Monazilla">Monazilla</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=Windows">Windows</a><a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=Mozilla">Mozilla</a>】</div></body></html>

(2)JavaScript形式で出力(クライアント側でランダム表示・Last-Modifiedあり)
http://p2.2ch.io/getf.cgi?[サーバー]+[板名]+[スレッド番号]

実行結果
var keywords = { "サクセス":"%83T%83N%83Z%83X", "テスト":"%83e%83X%83g", "test":"test", "Monazilla":"Monazilla", "Mozilla":"Mozilla", "NT":"NT", "MSIE":"MSIE", "Windows":"Windows", "tesuto":"tesuto", "CLR":"CLR" };var header = document.getElementById("header"), words = [];header.appendChild(document.createTextNode("キーワード【 "));for (var i in keywords) words.push(i);words.sort(function(a, b) { return Math.floor(3 * Math.random()) - 1; });for (var i = 0; i < words.length && i < 7; i++) { var a = document.createElement("a"); a.href = "http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=" + keywords[words[i]]; a.target = "_blank"; a.appendChild(document.createTextNode(words[i])); header.appendChild(a); header.appendChild(document.createTextNode(" "));}header.appendChild(document.createTextNode("】"));header.normalize();

・HTML版はそのままブラウザに表示すればリンクが表示され、JavaScript版はソースを実行するとリンクが表示されます。

・どちらも使いづらい場合、JavaScript形式の実行結果のvar keywords = { "[キーワード1]":"[1のURLエンコード]", ・・・ }をリンクタグに置き換えるとよいでしょう。

<a href="http://find.2ch.net/?BBS=ALL&TYPE=TITLE&ENCODING=SJIS&STR=[1のURLエンコード]">[キーワード1]</a>

・負荷軽減のため、getf.cgiは100レス単位に呼び出す・ユーザーがボタンを押したときのみ呼び出すなどの配慮を行いましょう。

| 運営情報::資料室詳細 | 12:37 AM | comments (x) | trackback (x) |
書き込み確認方法
メッセージボディの<title>タグの中身</title>を確認することで、書き込みが完了したか否かを判定することができます。
微妙に文字が異なる可能性があるので、部分一致でチェックしましょう。

書き込み成功 書きこみました
書き込み失敗 ERROR
書き込み不可(サーバー過負荷) お茶でも~
書き込み確認 書き込み確認

メッセージボディに含まれる<!-- 2ch_X:??? -->タグからも判別することができます。
(但し、常に含まれているとは限りません。)

書き込み成功 <!-- 2ch_X:true -->
書き込み成功&警告 <!-- 2ch_X:false -->
書き込み失敗 <!-- 2ch_X:error -->
書き込み警告 <!-- 2ch_X:check -->
書き込み確認 <!-- 2ch_X:cookie -->

タイトルタグと2ch_Xタグの両方を調べ、いずれかが一致すれば処理しましょう。
また、書き込み成功以外の場合はメッセージボディの内容を画面に表示し、ユーザーが確認できるようにしましょう。

| 運営情報::資料室詳細 | 12:31 AM | comments (x) | trackback (x) |
スレッドの作成
・レスの書き込みと同様に、bbs.cgiを呼び出すとスレッドの作成ができます。

・荒らし対策・規約承諾チェックについても同様に行われます。

・HTTPによるレスの書き込み例

要求メッセージの一例
POST /test/bbs.cgi HTTP/1.1
Host: [サーバー]
Accept: */*
Referer: http://[サーバー]/[板名]/
Accept-Language: ja
User-Agent: Monazilla/1.00 (ブラウザ名/バージョン)
Content-Length: ポストするデータの合計サイズ(バイト)
Cookie: [以前受け取ったcookie情報]
Connection: close

bbs=[板名]&subject=[スレッドのタイトル]&time=[投稿時間]&FROM=[名前]&mail=[メール]&MESSAGE=[本文]&submit=[ボタンの文字]
POST /test/bbs.cgi HTTP/1.1
Host: gimpo.2ch.net
Accept: */*
Referer: http://gimpo.2ch.net/namazuplus/
Accept-Language: ja
User-Agent: Monazilla/1.00 (monaweb/1.00)
Content-Length: 174
Cookie: PON=xAjpuk10.tky.hoge.co.jp; HAP=0000000; hana=mogera; PREN=%96%bc%96%b3%82%b5%82%b3%82%f1
Connection: close

bbs=namazuplus&subject=%82%C4%82%B7%82%C6%83X%83%8C&time=1230144297&FROM=%96%BC%96%B3%82%B5&mail=sage&MESSAGE=%82%C4%82%B7%82%C6&submit=%90V%8BK%83X%83%8C%83b%83h%8D%EC%90%AC

cookie情報はサーバー単位に共通なので、レス書き込み時のcookieが残っていればスレッド作成時も使用できます。
cookieが無い場合、やはり書き込み確認画面が表示されます。

要求ボディもレス書き込み時とほぼ同じですが、以下の点が異なります。

subject=[スレッドのタイトル]の指定が必要です。
key=[スレッド番号]の指定は不要です。
submit=[ボタンの文字]の値は"新規スレッド作成"(をURLエンコードしたもの)です。

要求が成功すればサーバーから200 OKが返ります。
書き込みが成功したか否かの判定は書き込み完了の判定方法についてをご覧下さい。

| 運営情報::資料室詳細 | 12:22 AM | comments (x) | trackback (x) |

PAGE TOP ↑