JDim icon indicating copy to clipboard operation
JDim copied to clipboard

5ch.netのドングリシステムに関して

Open ma8ma opened this issue 10 months ago • 7 comments

5ch.netのドングリシステムに関して

edit(2024-05-11): どんぐりシステムFAQが公開されました。 https://donguri.5ch.net/faq

背景や動機

2024年3月下旬ころにドングリシステムという名前のユーザーを識別する仕組みが5chに導入されると発表がありました。 専用ブラウザでの利用に際し、修正や更新が必要かどうかについての情報が公開される可能性があります。

https://donguri.5ch.net/ https://kes.5ch.net/test/read.cgi/donguri/1712043002/175

導入される仕組みがどのようなものか調べたところセッションの永続化のためHTTP Cookieにユーザーの識別子を埋め込むようです。 JDimには次回起動したときにセッションを復元するため about:config に「2chのクッキーを保存する」の設定(はい・いいえ)、 「2chのクッキー」や「BBSPINKのクッキー」のクッキーの値を保存する設定があります。

しかし、クッキー保存の設定はJDimが実装したクッキー管理と連携がしっかり噛み合っていません。 そのため、「2chのクッキーを保存する」の設定を"はい"にするとクッキーの重複や矛盾が発生する可能性があります。

解決方法

現時点ではクッキー管理を整理してクッキーの重複や矛盾が発生しないように修正しておきます。

代替案

なし

追加の情報

ドングリシステムがフリーでオープンソースのソフトウェアで利用することができるかどうかは不明です。

ma8ma avatar Apr 06 '24 12:04 ma8ma

ドングリシステムはまだ実装されていない機能があり変更される可能性があります。

2024-04-06 の時点でドングリシステムを使うには [バージョン] JDim 0.11.0-20240406(git:80a5c8c35a)以降に更新して about:config にある「2chのクッキーを保存する」の設定を"はい"にしてから読み込み、書き込みを行います。

ma8ma avatar Apr 06 '24 13:04 ma8ma

ドングリシステムの情報は5chどんぐり板(https://kes.5ch.net/donguri/) 、 または有志の方がまとめたページ(https://nanjya.net/donguri/) を参照してください。

以下は私が調べたことをまとめていますが、内容に間違いやミスがあったり情報が古くなっている可能性がありますので注意してください。

ドングリシステムを使用するには、以下の手順を行ってください。

  1. [バージョン] JDim 0.11.0-20240413(git:3a096d1481)以降に更新します。
  2. about:config にある「2chのクッキーを保存する」の設定を"はい"に変更します。
  3. スレを読み込んでレスの書き込みを行います。

edit(2024-05-08): 警備員のアカウントはクッキーを保存しない設定でも紐付けられている識別情報を確認できればアカウントを復帰できるようです。 リリース版 JDim 0.11.0-20240113 を利用しているときは2chのクッキーを保存しない設定でアカウントが復帰できるか確認してみてください。

ドングリシステムの警備員アカウントを作成する方法は以下の通りです。

  1. SETTING.TXTにBBS_ACORNが設定されている板(有志の方がまとめた一覧)に書き込むか、名前欄に !donguri と入力して書き込みます。
  2. ~~「ERROR: どんぐりを埋めました。芽が出るまで数分待ってから投稿して ください。」のエラーメッセージが表示され識別子が作成されます。~~

edit(2024-05-08): ERROR: どんぐりを埋めました。のエラーメッセージは出なくなったようです。 かわりにアカウントのレベルがレス書き込みに必要なレベルに足りないときはERROR: この板へ投稿するにはどんぐりレベルが足りません。[Lv.0 Required:1]とエラーメッセージが表示されます。この場合は必要なレベルになるまで待機してください。→ 有志の方が作成した経験値の表 http://dongurirank.starfree.jp/level.html

~~ドングリシステムのユーザー識別子が変更された場合~~ 警備員アカウントを作成、または再認証してから一定時間が過ぎるか、識別情報のチェックに失敗すると、「ERROR: どんぐりが枯れてしまいました。[0088]」のエラーメッセージが表示されます。 そのときはもう一度 ~~ユーザー識別子~~ レスを書き込んでアカウントを作成または復帰してください。 枯れる前の状態が引き継がれる条件は詳しく分かっていませんが、通信環境が固定回線だと引き継げる可能性があります。 edit(2024-05-08): エラーメッセージの [broken_acorn] は [0088] にかわりました。

警備員アカウントのステータスを確認する方法は以下の通りです。

ステータスは名前欄に「警備員[Lv.1][新][苗]」のような形式で表示されます。 ステータスを表示するには強制表示のスレに書き込むか名前欄に !donguri と入力して書き込みます。

書き込みを残したくない場合、スレ本文に半角ドット(.)のみ入力して書き込むと「ERROR: 本文が無いように見えますよね。」のエラーメッセージが表示され書き込みが失敗します。 このときエラーメッセージのダイアログにある「詳細」タブをクリックして切り替えると書き込み内容が表示されステータスを見ることができます。

ただし、書き込みエラーを繰り返すと規制の対象となるかもしれないため注意してください。

ma8ma avatar Apr 13 '24 12:04 ma8ma

ドングリシステムのアカウントを利用すると育成するスキルの選択やレベルの復活などいくつかのサービスやアクションを行うことができます。これらのサービスやアクションは、https://donguri.5ch.net/ のページにアクセスし、対応するリンクを選択することで利用できます。

JDimではアカウントを使用してドングリシステムに直接アクセスする機能が実装されていません。 現時点で機能を利用するためにはJDimにあるHTTPクッキーとユーザーエージェントを別のブラウザに移植してアクセスする必要があります。

JDimを使用してドングリシステムに直接アクセスする方法に関して、以下の2つのアイデアが考えられます。

  • ドングリシステムのAPIを利用してHTTPリクエストを送信するコマンドやオプションを開発する → ドキュメントやリファレンスは今のところ公開されていないためサイトのソースコードや動作を調べる必要があります。 さらに、APIのレスポンスとしてのHTMLを表示するために、描画処理の更新が必要となります。

  • ブラウザエンジンやWebViewと呼ばれるwebブラウザの機能を備えたライブラリを利用してhttps://donguri.5ch.net/を表示する → WebViewはライブラリであるため、これを利用するには依存関係の管理が必要です。 また、JDimで作成したアカウントがWebViewで利用できるかどうか、ライブラリのAPIを調査する必要があります。

ma8ma avatar Apr 20 '24 14:04 ma8ma

自動ログインした警備員アカウントで書き込むときの流れをフローチャートにしてみました 5chの更新で内容が古くなる可能性があります

edit(2024-05-16): ボックスの色別に説明追加

意味
専ブラ利用者のアクション
5chのレスポンス: エラーでレスの書き込みに失敗した
5chのレスポンス: 他の規制次第だがレスを書き込めた
専ブラや5chが行う処理で利用者は直接関わらない
---
title: 5ch 自動ログインした警備員アカウントで書き込むときの流れ (2024-05-15 時点)
---
graph TD;
    style write_res fill:#ffd,stroke:#333,stroke-width:2px
    style write_res2 fill:#dfd,stroke:#333,stroke-width:2px
    style write_res3 fill:#ffd,stroke:#333,stroke-width:2px
    style level_wait fill:#ffd,stroke:#333,stroke-width:2px
    style delete_cookie fill:#ffd,stroke:#333,stroke-width:2px
    style expire_cookie fill:#fdf,stroke:#333,stroke-width:2px
    style level_shortage fill:#fdf,stroke:#333,stroke-width:2px
    write_res[["レスを書き込む"]]
    write_res3[["レスを書き込む
    (最初に戻る)"]]
    is_donguri{{"どんぐりシステムが有効な板やスレか?"}}
    has_cookie{{"使用中の専ブラは警備員アカウントに
    ログイン(クッキーを保持)しているか?"}}
    is_expire_cookie{{"どんぐりは枯れているか?"}}
    expire_cookie["ERROR: どんぐりが
    枯れてしまいました 。[0088]
    (クッキーの有効期限が切れる)"]
    is_delete_support{{"使用中の専ブラはクッキーの
    期限切れに対応しているか?"}}
    delete_cookie[["クッキーを削除する"]]
    has_account{{"複合的な識別情報(≒使用中の専ブラ)と紐付けられている
    警備員アカウントがサーバーに存在するか?"}}
    login_account["アカウントにログインする
    (クッキーを取得)"]
    create_account["新しいアカウントを取得する
    (クッキーを取得)"]
    logout_account["アカウントからログアウトした
    (クッキーを消去)"]
    level_check{{"どんぐりレベルが足りてるか?"}}
    write_res2(["他に規制がなければ
    レスが書き込まれる"])
    level_shortage["ERROR: この板へ投稿するには
    どんぐりレベルが足りません。"]
    level_wait[["レベルが上がるまで待つ"]]

    write_res --> is_donguri;
    is_donguri --> |はい|has_cookie;
    is_donguri --> |いいえ|write_res2;
    has_cookie --> |はい| is_expire_cookie; 
    has_cookie --> |いいえ| has_account;
    is_expire_cookie --> |枯れてる| expire_cookie --> is_delete_support;
    is_expire_cookie --> |枯れてない| level_check;
    has_account --> |ある| login_account --> level_check;
    has_account --> |ない| create_account --> level_check;
    level_check --> |足りてる| write_res2;
    level_check --> |足りない| level_shortage --> level_wait --> write_res3;
    is_delete_support --> |はい| logout_account;
    is_delete_support --> |いいえ| delete_cookie --> logout_account;
    logout_account --> write_res3;

ma8ma avatar May 15 '24 12:05 ma8ma

以前公開した情報が古くなったため更新しました。 新しく公開されたFAQに載っている内容や不確実で曖昧な部分は割愛しています。

どんぐりシステムの利用に関しては5chの「どんぐりシステムFAQ」が分かりやすくまとまっています。 また、有志の方がまとめたページに詳しい資料が置いてあります。 どんぐりシステムの話をしたい、情報を集めたいときは5chのどんぐり板を利用してください。

以下は私が調べたことをまとめていますが、内容に間違いやミスがある可能性や、情報が古くなっている可能性がありますので注意してください。

JDimでドングリシステムを使用するには、以下の手順を行ってください。

  1. about:config の「2chのクッキーを保存する」の設定を"いいえ"に変更します。
  2. どんぐりシステムが有効な板のスレを読み込んでレスの書き込みを行います。

有志の方が どんぐりシステムが有効になっている板の一覧 を公開しています。

レスを書き込んだときに発生するエラー、およびその対処法 どんぐりシステムFAQを参照してください。

基本的には

  • 「どんぐりレベルが足りません!」が出た場合は、書き込みに必要なレベルに上がるまで待つ
  • 「どんぐりが枯れてしまいました」が出た場合は、もう一度書き込む

有志の方が レベルが上がるまでかかる時間の表 を公開しています。

ma8ma avatar May 16 '24 13:05 ma8ma

gmailのメールアドレスに警備員アカウントを登録するサービスが 2024-05-31 に開始されました。 https://kes.5ch.net/test/read.cgi/donguri/1716962079/340

特徴

サービス開始から間もないので不明な点や変更されるかもしれない点があります。

  • 登録可能なメールアドレスはgmailのみ
  • 警備員アカウントにログインしているときに https://donguri.5ch.net/register を表示してメアドとパスワードを登録する
    • 今のところメアドやパスワードは変更できない
  • https://donguri.5ch.net に追加されたログインフォームにメアドとパスワードを入力してログインする
    • 警備員アカウントに使われているHTTPクッキーが送られてくる
  • 一つのメールアドレスで一つのアカウントを登録する?
  • gmailのメールエイリアスをサポート すでに持っている Gmail のアドレスの「@」の前に、「+(半角プラス)」を付けて任意の文字列を追加すれば、別のメールアドレスとして利用できる メールエイリアスを使えば複数のアカウントを登録できる?
  • メアドに登録したアカウントは複合的な識別情報(≒使用中の専ブラ)によるログインも引き続きできる?
    • 複合的な識別情報からログインできないようにするオプションが追加?未検証
  • メアドに登録したアカウントもクッキーの期限が切れると書き込みエラーを出す
  • ログイン、ログアウトを短時間の間に繰り返すとエラーが出てログインできなくなる

とりあえず様子を見ながらログイン機能の実装ができるか検証してみます。

edit(2024-06-17): メールアドレスで登録した警備員アカウントにログインする機能を実装しました。 (#1402) この機能は実験的なサポートのため変更または廃止の可能性があります。

ma8ma avatar Jun 02 '24 14:06 ma8ma

https://jdimproved.github.io/JDim/donguri/ オンラインマニュアルにどんぐりシステムの使用方法についてまとめたページを追加しました。

ma8ma avatar Jun 29 '24 14:06 ma8ma