4 months ago 0 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の代わりとしては欠陥品です。
4 months ago 2 commits to master since this release
これは正式リリースではありません。スナップショットとしてwin32向けのMITM有効バイナリとmacOS向けバイナリのみを置いておきます。
主にread.cgiの出力が (5chのみ) 変わったためread.cgiモードが動作しなくなった問題への対応です。--direct-dat
で使用していた場合は特に影響はありません。
どんぐりシステム絡みでcookie関係の新しいオプションが追加されていますが、詳細はコミットログを追ってください。
1 year ago 20 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 104 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はここに置いておきます。
1 year ago 113 commits to master since this release
-p
オプションでカンマ区切りで複数のポート番号を指定し待ち受け可能にproxy2ch.port
で待ち受けポートを取得可能にwillSendRequestToBbsCgi
関数の戻り値のoptions
で--proxy
オプションと同様の指定が可能なproxy
が利用可能にUSE_ECDSA_KEY
マクロを有効にしてビルドするとECDSAな鍵で署名されたサーバ証明書を使うようにOPENSSL_NO_SECURITY_DOWNGRADE
を定義することで無効化できます。MITM版のバイナリはOpenSSL 3.1にリンクしているのですが配布されているmingw向けのDLLがWindows XPと非互換のようなので1.1にリンクし直したものも置いておきます。
2 years ago 127 commits to master since this release
proxy2ch.monaKey
の代わりに新たに用意されたproxy2ch.getMonaKey()
関数を使い、この関数の引数にUser-Agentを渡すことによりUser-Agentに対して払い出されたMonaKeyをproxy2ch側から取得することができます。proxy2ch.monaKey
も従来どおり使えますが、この変更の恩恵は受けることはできません。移行は差分とかを参考にしてください。willSendRequestToBbsCgi
関数の戻り値にoptions
という名前のtable
を指定可能に
table
です。request
を戻り値として、request.options = {interface = "en0"}
とすると、libcurlに渡されるCURLOPT_INTERFACE
の値がen0
に設定されます。(5/28追記) このバージョンよりAndroidのTermux向けのバイナリパッケージを配布するようにします。
.debをダウンロードしてdpkg -i
でインストールできます。libc++
libcurl
libiconv
openssl
liblua54
の各パッケージに依存があり、インストールされていない場合はエラーが出るので、pkg install
で適宜インストールしてください。
なお手持ちのAndroid機でビルドしたものをパッケージにしただけなのでaarch64用のみです。Termuxは特殊な環境ではないのでその他のアーキテクチャ (arm, x86-64, i686) でもコンパイラやライブラリをpkg install
すれば普通にビルドできます。
2 years ago 141 commits to master since this release
--api-override
オプションを追加
--api
でAPIキーを指定していない場合は動作しません。IsValidAsUTF8
関数にバグがあり、UTF-8かどうかの判定を間違えるケースがあったのを修正--api-auth-ua
、--api-dat-ua
が指定されておらず-a
でMonazilla/で始まるUser-Agentが指定されている場合に-a
で指定した値を--api-auth-ua
、--api-dat-ua
の代わりに使うように2 years ago 170 commits to master since this release
pthread_sigmask
とSIG_BLOCK
でSIGPIPEの発生を防げないようなのでsignal
とSIG_IGN
に戻した
2 years ago 172 commits to master since this release
--num-threads
オプションでスレッド数を指定できます。-c
オプションが指定されCONNECTメソッドで非MITMなproxyとして動作する場合はプールとは別に独立したスレッドを生成して通信を行います。NO_THREAD_POOL
マクロを定義してビルドします。NO_CURL_REUSE_HTTPS
マクロを定義してビルドします。NO_THREAD_POOL
マクロが定義されている場合は再利用も無効化されます。2 years ago 190 commits to master since this release
--bbscgi-utf8
オプションを追加
none
、api
、all
の3種類が指定できます。none
は変換を行わず (バージョン20220406以前と同じ挙動)、api
は--api
オプションにより書き込みにAPIが使われるときのみ (前バージョンと同じ挙動)、all
は条件なしに変換を行います。デフォルトはapi
です。Content-Type
ヘッダではなくリクエストボディそのものを見て行うように
proxy2ch.isValidAsUTF8
という名前で定義されています。リクエストボディ全体を雑に判定したい場合はproxy2ch.isValidAsUTF8(proxy2ch.decodeURIComponent(request.body))
のような形で記述します。-c
オプションが指定され非MITM動作時、CONNECTメソッドを受け取ってサーバとの接続が確立できない場合にクラッシュする問題を修正
USE_MITM
マクロと同時にUSE_GNUTLS
マクロが定義されているとOpenSSLの代わりにGnuTLSをバックエンドとして使います。Linux等GnuTLSが標準の環境ではOpenSSLを使わずに済みます。