3 hours ago 0 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリのみを置いておきます。
5chにおいてCloudflareのbot判定(?)が厳しく行われるようになり、一部環境で影響が出ています。User-Agent等リクエストヘッダで判定される場合と、https接続のセッション状態から判定される場合があり、後者は接続に使われるTLSプロトコルスタックの実装によって発動する条件が異なるようです。
バージョン20250503のWindows用バイナリに使われているOpenSSL 3.0.16の場合、TLSv1.2を使うと問題は起きませんが、TLSv1.3を使うと最初のリクエストに対しては必ず403が返ってきて、keep-alive状態の同じセッションで再度リクエストを送ると正常なレスポンスが返ってくるという正直意味不明な挙動をしています。TLSv1.3で問題ない実装 (OpenSSL 3.5等) もあればTLSv1.2でもダメなものもあるようで、単純にTLSのバージョンや暗号スイートで判定しているわけではなくclient hello等のセッション情報から総合的な判定を行っているように見えます (TLS fingerprintingと言うらしい)。
このような背景からproxy2chに--tls-maxオプションを追加し、https接続時に使用されるTLSのバージョンを選択可能にしました。このWindows用バイナリではOpenSSL 3.0.16が使われる都合上、デフォルトが--tls-max 1.2相当になっています。1.0や1.1も指定可能ですが、5chは1.2未満のTLS接続を受け入れないようです。
3 weeks ago 6 commits to master since this release
前回の正式リリース版 (20230713) からの主な更新点は以下の通りです。
--direct-datの動作をデフォルトに
既に--direct-datで使っていた場合やAPIを使っていた場合は問題ありませんが、そうでない場合は現行のスレッドに対して差分取得を行うと不整合が生じて全体の再取得が必要になる可能性が高いです。--no-direct-datオプションで引き続きread.cgi経由でのログ取得を行うことも可能です。
5chの最新の仕様への追従
新しい投稿確認画面、過去ログサーバ (kako.5ch.net) 上のログ取得、read.cgiが出力するhtmlの変更等に対応しています。過去ログサーバ上のログ取得には-sオプションが必要です。
5ch投稿時に必要なクッキーの管理を代行する--manage-bbscgi-cookiesオプションを追加
主にAPIに対応したまま更新が行われていない専ブラは5chへの書き込みに際してcookieを無視するものが多く、書き込みに支障があることが多いため、このオプションを有効にするとproxy2chが書き込み時に送受信されるクッキーの管理を代行します。このオプションを有効にすると、クッキーの閲覧/削除や各種アカウントでログインが可能なwebインターフェイスが利用できます。詳細はREADMEを参照してください。
bbsmenuの生成機能を追加
proxy2chがmenu.5ch.netの代わりにいくつかの条件のもとでbbsmenuを生成します。詳細はREADMEを参照してください。
Talk掲示板に対応
Talkが2ch互換の掲示板としてアクセス可能になります。書き込みと本物のdatの取得にはAPIキーが必要です。APIを使わない場合は公開されているjsonからdatを生成する動作になり、書き込みはできません。
このリリースから、Windwos用のバイナリはMITM有効版のみを配布します。これに伴いlibcurlに加えてlibsslとlibcryptoのDLLが起動に必須になります。また、libcurlのTLS用ライブラリの依存先をSchannel (Windows内蔵のTLS/SSLプロトコルスタック) ではなくOpenSSL (バージョン3.0.16) に変更しています。そのため、libcurl自体もlibsslとlibcryptoのDLLに依存します。これはWindows XPでの動作改善のため (XPのSchannel実装は現在のWeb環境でのhttps接続には使い物にならない故) です。従来通りOpenSSLに依存しないlibcurlを使いたい場合は、Schannelフォルダにdllを同梱してあるので差し替えてください。
4 weeks ago 15 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
--direct-datの動作をデフォルトとし、オプションの指定は不要に
--no-direct-datオプションを指定してください。MonaTicketが送られた場合のサーバからのエラー応答がE3000からE3100に変化したのに対応-sオプションで接続先がhttpからhttpsに変化した場合、bbs.cgiに渡されるリファラもhttpからhttpsに自動で書き換えるように--manage-bbscgi-cookiesが指定されている場合に利用可能なcookie管理用のwebインターフェイスを実装
http://localhost:9080/5ch/cookiesでアクセスできます。proxy2chの管理下にあるcookieの閲覧と削除が可能です。--manage-bbscgi-cookiesが指定されている場合に利用可能などんぐり/be/UPLIFTアカウントのログイン用のwebインターフェイスを実装
http://localhost:9080/5ch/accountsでアクセスできます。http://localhost:9080/5ch/accountsに対して以下のパラメータをapplication/x-www-form-urlencoded形式でPOSTしてください。service : donguri, be, uplift のいずれかaction : login, logout のいずれかmail : メールアドレス (actionがlogoutの場合は不要)pass : パスワード (actionがlogoutの場合は不要)curl -d "service=donguri" -d "action=login" --data-urlencode "mail=foo@example.com" --data-urlencode "pass=my-secret-password" http://localhost:9080/5ch/accountsとします。webインターフェイスのアドレスlocalhost:9080のポート番号の部分はデフォルトの9080番で待ち受けている場合の話です。-pで変更している場合は適宜読み替えてください。なお、 -gを付けて外部からの接続を受け付けている場合でもlocalhost以外からのアクセスは不可です。
no space left on deviceと言われてアップロードが不可なので一時的にバイナリを別の場所に置きます。
ビルド環境を変えてからWinXPでテストしていなかったのですがXPで動くかもしれないビルドも試験的に置いておきます。
1 month ago 33 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
--bbscgi-fix-timestampオプションを追加timeを弄ると投稿確認に失敗する可能性がある問題を修正(主に新仕様の投稿確認画面に対するリクエストで?) リクエストボディのtimeフィールドが現在時刻から大きくずれていると「投稿時刻がおかしい」エラーが出るようになったようなので、その対処です。
1 month ago 35 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
20250401 snapshotは--skip-bbscgi-confirmationを指定した際に誤ったContent-Lengthヘッダを付与してしまうことがあるため、更新を推奨します。
このバージョンではオプションなしで新しい投稿確認処理に対応するようになっています。新しい--bbscgi-confirmationオプションで挙動を制御することもできます。
--bbscgi-confirmation auto
--bbscgi-confirmation skip
--skip-bbscgi-confirmationと同じ動作です。autoでうまくいかない場合はこちらを使ってください。--bbscgi-confirmation none
--skip-bbscgi-confirmationは--bbscgi-confirmation skipのエイリアスです。
1 month ago 39 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
5ch/bbspinkへの投稿に関係するcookieをproxy2ch側で処理する--manage-bbscgi-cookiesオプションを追加
Set-Cookieヘッダは透過的に送られますが、専ブラ側からのCookieヘッダはBeやUplift関係のものを除いて無視されます。--keystoreオプションで指定したファイルがcookieの永続的な保管庫として利用されます (APIのMonaKey用のものと共用)。指定しなかった場合はproxy2chを終了した時点で全てのcookieは破棄されます。5ch.netの新しい投稿確認処理をproxy2ch側で代行する--skip-bbscgi-confirmationオプションを追加
Accept-Encodingヘッダの値は無視されます。--direct-dat有効時に過去ログサーバ上で公開されているスレッドを取得するように
kako.5ch.netというサーバ上で公開されるようになりましたが、依然としてread.cgi経由でhtml版が表示できるのみで生datは公開されていないようです。--direct-datオプションが有効な時でも過去ログサーバ上にログが見つかった場合はread.cgi経由でログを取得するようにしました。read.cgiの出力が変更されhtmlからの変換に失敗するようになっていた問題を修正
--direct-datに移行しましょう。書き込み時に「Cookieの内容が壊れている」旨のエラーが出た場合、専ブラ側にSet-Cookieヘッダを送ってMonaTicket cookieの無効化を促すように
10 months ago 48 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
read.cgiへのリクエストがデフォルトでitest.5ch.netにリダイレクトされるようになったため、5chClassic=onというcookieを送りリダイレクトを防ぐようにしました。--direct-datで使用していた場合は特に影響はありません。
この回避策がいつまで有効なのかは不明ですが、すみやかに (ライブなスレッドはdat再取得になることを受け入れて) read.cgiを利用しない--direct-datに移行することをおすすめします。proxy2chのデフォルト動作は近いうちに--direct-dat相当になる予定です。
itest.5ch.netのjsonからdatを生成するコードも一応入っており、read.cgiが完全に停止された場合はこちらにフォールバックさせる予定ではありますが、名前欄のタグが欠落するという問題があるためread.cgiの代わりとしては欠陥品です。
11 months ago 50 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
主にread.cgiの出力が (5chのみ) 変わったためread.cgiモードが動作しなくなった問題への対応です。--direct-datで使用していた場合は特に影響はありません。
どんぐりシステム絡みでcookie関係の新しいオプションが追加されていますが、詳細はコミットログを追ってください。
1 year ago 68 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリのみを置いておきます。
--subject-to-lastmodifyオプションはsubject.txtへのリクエストを受け取った時にlastmodify.txtのダウンロードを行い、subject.txt相当のデータを生成してクライアントに返すという動作をします。ただしlastmodify.txtの内容は順序がデタラメであり、proxy2ch側で生成時に一律更新順にソートしているため、age/sageの区別なしに書き込みがあったスレが上に来る、という感じになります。
内部はいろいろ変わっています。talkの読み書きやtalkのみ対応ブラウザから5chを読み書きする機能等、興味がある場合はコミットログを追いかけてください。
2023/10/11付でcurl 8.4.0がリリースされており、7.69.0以降のバージョンにおいてSOCKS5 proxyを利用する際の深刻な脆弱性の修正が報告されているのでlibcurlの更新を推奨します。具体的にはproxy2chを--proxy socks5h://...なオプション付きで起動し、socks5 proxy側に名前解決を委ねている場合はおそらく脆弱性の影響を受けると思われます。proxy2chのパッケージに同梱されているlibcurl.dllの置き換え向けにWin32向けのdllはここに置いておきます。
1 year ago 152 commits to master since this release
--direct-datオプションを追加
/板名/dat/***.dat (現行ログ) あるいは/板名/oyster/***/***.dat (過去ログ) にあるファイルを直接参照するようになります。Rangeヘッダが存在しない場合に限ります。--api-overrideオプションが--apiなしでも機能するように
--direct-datと併用した場合) 取得したものを返すようになります。ただし、httpsな接続を改変するためにMITMを行う必要があるため、PC向け以外のブラウザでは証明書関係のハードルが高いと思われます。一連の騒動によりAPIが停止し、.datファイルへの直接アクセスが開放されたため、5chは再び従来の2ちゃんねる型スレッドフロート掲示板として読み書きできるようになりました。API導入以前のブラウザをそのまま利用できる環境になったため、このツールを利用しなければいけない場面は大幅に少なくなったと思います。これまでread.cgi経由でログを取得していて、これを契機に直接取得に切り替える場合、現行のスレッドに対して差分取得を行うとログが破損する可能性が高い点に注意してください。
浪人ログインしない限り (?) API経由で.datの取得をするのは不可能であり、書き込みでもMonaKey関連のシステムが停止しているようなので、API関係のオプションを指定する意味はないと思います。
2023/10/11付でcurl 8.4.0がリリースされており、7.69.0以降のバージョンにおいてSOCKS5 proxyを利用する際の深刻な脆弱性の修正が報告されているのでlibcurlの更新を推奨します。具体的にはproxy2chを--proxy socks5h://...なオプション付きで起動し、socks5 proxy側に名前解決を委ねている場合はおそらく脆弱性の影響を受けると思われます。proxy2chのパッケージに同梱されているlibcurl.dllの置き換え向けにWin32向けのdllはここに置いておきます。