5ちゃんねる専用ブラウザ開発情報交換所アーカイブ最終更新 2023/07/22 20:301.名無しさん@涙目です。JfBGpひまつぶしに作りたい方どうぞ2023/07/20 21:03:2718すべて|最新の50件2.名無しさん@涙目です。JfBGp色々情報書こうと思ったがNGワードが含まれてますとエラーが出て書けない2023/07/20 21:11:433.名無しさん@涙目です。98D4Rそれよりガイジ追い出せよ2023/07/20 21:15:024.名無しさん@涙目です。bNXLWちょっと作りたい2023/07/20 22:23:045.名無しさん@涙目です。JfBGp基本1chの漢字コードはShift-JISである接続先ポート番号はもちろんTCPの80番になりますスレッドのURLがhttp://news2.1ch.net/test/read.cgi/newsplus/1000000000/ならばホスト名: news2.1ch.net板キー: newsplusスレキー: 1000000000と定義します。基本はこの3つだけです。簡単ですね?では、どんどんいってみよー。2023/07/20 22:43:296.名無しさん@涙目です。JfBGp読みスレッド一覧の取得subject.txtの場所/板キー/subject.txtsubject.txtのフォーマットスレキー.dat<>スレタイトル (総レス数)\nhttp要求ヘッダ例GET /newsplus/subject.txt HTTP/1.0Accept-Encoding: gzipHost: news2.1ch.netUser-Agent: Monazilla/1.00Connection: close要求が成功すれば200 HTTP_OKが返ってくる。この例の場合、要求ヘッダでgzip圧縮を受け入れるようにしているため、応答ヘッダで圧縮されているか確認して、必要ならば解凍しなければいけない。圧縮されたかどうか確認するには、応答ヘッダContent-Encodingにgzipがあるか調べる。1chでは、転送量問題が発生した時から、データをgzip圧縮して返すことを推奨(必須?)している。圧縮要求しなければデータを取得できない、なんてサーバもあったような気が。。ユーザエージェントは、とりあえずモナジラと名乗っておきます。subject.txtが更新されていなかったらデータを取得しないように、If-Modified-Sinceを付けて要求するのも、無駄な負荷を減らすポイントです。2023/07/20 22:44:187.名無しさん@涙目です。JfBGpDATの取得DATの場所/板キー/dat/スレキー.datDATのフォーマット名前<>メール欄<>日付、ID<>本文<>スレタイトル(1行目のみ存在する)\nhttp要求ヘッダ例GET /newsplus/dat/1000000000.dat HTTP/1.0Accept-Encoding: gzipHost: news2.1ch.netUser-Agent: Monazilla/1.00Connection: close要求が成功すれば200 HTTP_OKが返ってくる見つからなければ302 HTTP_MOVED_TEMPORIALYや404 HTTP_NOT_FOUNDなどが返ってくる2023/07/20 22:44:518.名無しさん@涙目です。JfBGp書きレスを書き込むPOSTする場所/test/bbs.cgihttp要求例POST /test/bbs.cgi HTTP/1.0Host: news2.1ch.netContent-length: ポストするデータのサイズ(バイト)Referer: http://news2.1ch.net/newsplus/User-Agent: Monazilla/1.00Cookie: NAME=名前; MAIL=メール; SPID(PON)=値; expires=有効期限; path=/Connection: closebbs=newsplus&key=1000000000&time=1&submit=書き込む&FROM=名前&mail=メール&MESSAGE=本文ポストするデータの内容bbs板キーkeyスレキーtime1ch側の書き込みフォームが生成された時刻。time関数の戻り値である。たいがいの1chブラウザはローカルで時刻を生成していたが、規制によって未来からの書き込みが禁止になった。 ローカルの時計が狂っていると永久に書き込めないのである。そこで現在は、datを取得した時の応答ヘッダにあるDateヘッダの値から逆算するなどの工夫が取られている。しかし、1ch側では有効期限をチェックしていない、ちょっとアレな仕様のため、適当に大昔の時刻を入れても大丈夫なのである。submit書き込みボタンのキャプション。通常は"書き込む"。文字列はURLエスケープしておきましょう。これがないと「SJISで書いてね」とか怒られる。初めて1chとお話しすると、まずこの罠に嵌ります。FROM名前。URLエスケープしておく必要があります。FROMは大文字であることに注意!URLエスケープ半角空白→「+」「エスケープ」→「%a5%a8%a5%b9%a5%b1%a1%bc%a5%d7」mailメール。URLエスケープしておく必要があります。MESSAGE本文。URLエスケープしておく必要があります。MESSAGEは大文字です。sidセッションID。ログインすると発行されるあれです。ログインしていないなら不要。もし付与するなら、これもURLエスケープしておきます。2023/07/20 22:45:319.名無しさん@涙目です。JfBGp5ちゃんねるがNGワードになってるから1chって書いてるけどそこは修正してね2023/07/20 22:46:5410.名無しさん@涙目です。bNXLW広告の何%もらえるんだろ2023/07/20 22:50:0611.名無しさん@涙目です。JfBGphttps://menu.1ch.net/bbsmenu.htmlhttps://menu.1ch.net/bbsmenu.json※1chは1を5に入れ替えてね板一覧はbbsmenuから板名とURLを抜き出して作るhtmlとjsonはどちらでもよい2023/07/20 22:54:5512.名無しさん@涙目です。JfBGp>>10新5ちゃんねるは広告料の分配は廃止された。自分で広告会社と契約して広告入れるのはOKtalk.jpはその辺の情報は公開してなかったと思うが旧5ちゃんねる時代は月2000~3000ドルだと言ってた人がいた気がする2023/07/20 22:58:1513.名無しさん@涙目です。JfBGpDAT取得のURL変換実例スレのURLからDATのURLに変換してダウンロードする欲しいスレのURLhttp://mevius.1ch.net/test/read.cgi/tech/1687260267/↓DATのURLhttp://mevius.1ch.net/tech/dat/1687260267.dat※1chを5に変えてくださいダウンロードしたDATを加工させて表示すればOK簡単なのはブラウザコントロールを使って表示させる事AndroidでもWindowsでも大抵の開発環境で可能2023/07/20 23:07:3914.名無しさん@涙目です。wcQ09必死に誘導したい人が痛々しいスレw2023/07/20 23:20:1215.名無しさん@涙目です。KjG7r勢いの計算式教えて2023/07/20 23:31:4016.名無しさん@涙目です。LTXpq今日もお仕事ご苦労様です2023/07/21 07:59:2917.名無しさん@涙目です。NcGWlトークは勝手に開発していいの?2023/07/21 22:20:2918.名無しさん@涙目です。MOCE7>>15「勢い = レス数 / (現在のUNIX時間 ? スレッド内の1番目の投稿のUNIX時間) ÷ 86400(24時間)」2023/07/22 20:30:58
1chの漢字コードはShift-JISである
接続先ポート番号はもちろんTCPの80番になります
スレッドのURLがhttp://news2.1ch.net/test/read.cgi/newsplus/1000000000/ならば
ホスト名: news2.1ch.net
板キー: newsplus
スレキー: 1000000000
と定義します。
基本はこの3つだけです。簡単ですね?
では、どんどんいってみよー。
スレッド一覧の取得
subject.txtの場所
/板キー/subject.txt
subject.txtのフォーマット
スレキー.dat<>スレタイトル (総レス数)\n
http要求ヘッダ例
GET /newsplus/subject.txt HTTP/1.0
Accept-Encoding: gzip
Host: news2.1ch.net
User-Agent: Monazilla/1.00
Connection: close
要求が成功すれば200 HTTP_OKが返ってくる。
この例の場合、要求ヘッダでgzip圧縮を受け入れるようにしているため、応答ヘッダで圧縮されているか確認して、必要ならば解凍しなければいけない。
圧縮されたかどうか確認するには、応答ヘッダContent-Encodingにgzipがあるか調べる。
1chでは、転送量問題が発生した時から、データをgzip圧縮して返すことを推奨(必須?)している。
圧縮要求しなければデータを取得できない、なんてサーバもあったような気が。。
ユーザエージェントは、とりあえずモナジラと名乗っておきます。
subject.txtが更新されていなかったらデータを取得しないように、If-Modified-Sinceを付けて要求するのも、無駄な負荷を減らすポイントです。
DATの場所
/板キー/dat/スレキー.dat
DATのフォーマット
名前<>メール欄<>日付、ID<>本文<>スレタイトル(1行目のみ存在する)\n
http要求ヘッダ例
GET /newsplus/dat/1000000000.dat HTTP/1.0
Accept-Encoding: gzip
Host: news2.1ch.net
User-Agent: Monazilla/1.00
Connection: close
要求が成功すれば200 HTTP_OKが返ってくる
見つからなければ302 HTTP_MOVED_TEMPORIALYや404 HTTP_NOT_FOUNDなどが返ってくる
レスを書き込む
POSTする場所
/test/bbs.cgi
http要求例
POST /test/bbs.cgi HTTP/1.0
Host: news2.1ch.net
Content-length: ポストするデータのサイズ(バイト)
Referer: http://news2.1ch.net/newsplus/
User-Agent: Monazilla/1.00
Cookie: NAME=名前; MAIL=メール; SPID(PON)=値; expires=有効期限; path=/
Connection: close
bbs=newsplus&key=1000000000&time=1&submit=書き込む&FROM=名前&mail=メール&MESSAGE=本文
ポストするデータの内容
bbs
板キー
key
スレキー
time
1ch側の書き込みフォームが生成された時刻。time関数の戻り値である。
たいがいの1chブラウザはローカルで時刻を生成していたが、規制によって未来からの書き込みが禁止になった。 ローカルの時計が狂っていると永久に書き込めないのである。
そこで現在は、datを取得した時の応答ヘッダにあるDateヘッダの値から逆算するなどの工夫が取られている。
しかし、1ch側では有効期限をチェックしていない、ちょっとアレな仕様のため、適当に大昔の時刻を入れても大丈夫なのである。
submit
書き込みボタンのキャプション。通常は"書き込む"。文字列はURLエスケープしておきましょう。
これがないと「SJISで書いてね」とか怒られる。初めて1chとお話しすると、まずこの罠に嵌ります。
FROM
名前。URLエスケープしておく必要があります。FROMは大文字であることに注意!
URLエスケープ
半角空白→「+」
「エスケープ」→「%a5%a8%a5%b9%a5%b1%a1%bc%a5%d7」
mail
メール。URLエスケープしておく必要があります。
MESSAGE
本文。URLエスケープしておく必要があります。MESSAGEは大文字です。
sid
セッションID。ログインすると発行されるあれです。ログインしていないなら不要。
もし付与するなら、これもURLエスケープしておきます。
https://menu.1ch.net/bbsmenu.json
※1chは1を5に入れ替えてね
板一覧はbbsmenuから板名とURLを抜き出して作る
htmlとjsonはどちらでもよい
新5ちゃんねるは広告料の分配は廃止された。自分で広告会社と契約して広告入れるのはOK
talk.jpはその辺の情報は公開してなかったと思うが旧5ちゃんねる時代は月2000~3000ドルだと言ってた人がいた気がする
スレのURLからDATのURLに変換してダウンロードする
欲しいスレのURL
http://mevius.1ch.net/test/read.cgi/tech/1687260267/
↓
DATのURL
http://mevius.1ch.net/tech/dat/1687260267.dat
※1chを5に変えてください
ダウンロードしたDATを加工させて表示すればOK
簡単なのはブラウザコントロールを使って表示させる事
AndroidでもWindowsでも大抵の開発環境で可能
「勢い = レス数 / (現在のUNIX時間 ? スレッド内の1番目の投稿のUNIX時間) ÷ 86400(24時間)」