2chAPIProxy
2chAPIProxy copied to clipboard
書き込み仕様変更について
- https://egg.5ch.net/test/read.cgi/software/1645325050/65
X-PostNonce: 現在のunix時間 X-MonaKey: 書き込み確認画面のレスポンスヘッダにある X-PostSig: リクエストボディとかのハッシュ?
- https://egg.5ch.net/test/read.cgi/software/1645325050/68
一番最初の書き込みは X-MonaKey: 00000000-0000-0000-0000-000000000000 で投げて 書き込み確認のレスポンスが帰ってくるからそのヘッダにある X-MonaKey: ??? を使って改めて書き込み そしてX-MonaKeyを保持して次からの書き込みに使い回す X-MonaKeyの寿命は604800秒(一週間) 荒らすとそのX-MonaKeyがBANされて書き込み不可に ってとこか X-PostSigの算出が分かれば解決しそう APIってより書き込みの際のbbs.cgiのヘッダを変えただけかな webブラウザからはどうするんだろ
- https://egg.5ch.net/test/read.cgi/software/1623141723/744
とりあえずEn2chを使ってアルゴリズムはわかった
板名<>dat番号<>UinxTime<>名前<>メール<>本文<>空<>ユーザーエージェント<>MonaKey<>空<>Nonce(UnixTime + ".000")
っていう文字列をEn2chから取り出した秘密鍵でHmacSHA256でハッシュすれば署名通って書き込めた MonaKeyは専ブラを再インストールしたり1週間で変わるとか言われてるやつで署名なしで書き込もうとするとレスポンスヘッダに付いてくる 空のところはEn2chにはないお絵描きとかBe番号とかかなのかもしれない
ChMateの秘密鍵も探してみる
- https://egg.5ch.net/test/read.cgi/software/1645325050/111-115
F7vFm WCGd5 Gzs8hc03 NpRvw4 bPwMz3
- https://egg.5ch.net/test/read.cgi/software/1645325050/121
◆UserAgent(例) Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3)
◆X-2ch-UA 2chMate/0.8.10.153
◆X-ApiKey 8yoeAcaLXiEY1FjEuJBKgkPxirkDqn
◆HMKey >>111-115
書き込みのApiKey, HMKeyは DAT読み込みのAppKey, HMKey としても使えるっぽいな
大変参考にした🙏
- https://notabug.org/NanashiNoGombe/proxy2ch/src/master/lua/sample.lua
C#版はだいたいこんな感じ?
- https://wandbox.org/permlink/sSUGIizjz5p4nJPP
実際には
- ポストするエンコードとハッシュを求めるときのエンコードを合わせる
- MonaKey更新時は書き込みますか?の画面が帰ってくるらしい
- なので、自動リトライとかは専ブラに任せればよさげ?
- MonaKey取得後、速攻で書き込むと早すぎるといわれる
- 1秒でもまだ早い、今は5秒で行けてる
- https://egg.5ch.net/test/read.cgi/software/1623141723/793
そういえば、新仕様の専ブラは定期的に書き込み前の警告を5秒ほど強制表示するようになったから MonaKey発行の時はその秒数ぐらい待たないといけないとかあるかも(あてずっぽ
- 成功した時は、レスポンスヘッダに
X-Chx-Errorヘッダはないらしい
- https://twitter.com/h_i_o_k_i/status/1176008627867414528
0000 Set cookies; 1000 Post date is invalid; 1011 Thread is not alive; 6990 MultiPost1; 9804 Banned by Oven; 6970 Landfill1; 9911 Banned; 9999 Not yet;
(そんな前からあったのか
そのほか見たやつ
X-Chx-Error:0001 Confirmation phase;X-Chx-Error:6200 Invalid RONIN SID;X-Chx-Error:6902 CoPiPe;X-Chx-Error:8853 Detect invalid proxy.X-Chx-Error:8903 Rejected;- ただ今制限を設けております。
X-Chx-Error:9801 Posting is so fast.X-Chx-Error:E3000 Broken request header.;X-Chx-Error:E3304 Invalid API key.;X-Chx-Error:E3331 Invalid signature.- 署名が一致しません。
X-Chx-Error:E3310 Invalid key.- 鍵が無効です。
X-Chx-Error:E3324 Expired key.;- 鍵の有効期限が切れています。
X-Chx-Error:E3390 Unavailable key.;
スレで見かけたやつ(真偽は不明、一応)
X-Chx-Error : 9100 Banned. Go news4vip;X-Chx-Error : 6202 Can not get RONIN SID: NoUnpad;X-Chx-Error : 1030 Thread is stopped;X-Chx-Error : E3381 No key has been issued.;X-Chx-Error : E3392 Key has been lost.;X-Chx-Error : E3391 Key has expired.;
正常に得られたMonakeyを改変(最下位桁を+1)して送ったところX-Chx-Error:E3310 Invalid key.が得られた。
初期値は000のやつじゃないとだめっぽい?
- https://egg.5ch.net/test/read.cgi/software/1648822853/382
同じ板でもスレによって書き込めたり署名が一致しません。って出たりするな
- https://egg.5ch.net/test/read.cgi/software/1648822853/383
昨日以前の取得したスレではエラーでるけど その場合はスレのログ削除して新たに取得したらエラー一切でないわ
- https://egg.5ch.net/test/read.cgi/software/1648822853/384
他のブラウザでそのスレに書き込んでたり、キーを変えて書き込むとそうなるみたい
あーもしかして、一度新仕様で書き込みを試みていた(書き込めなかった)状態でUAとかを設定し直すとこうなる?
なんか状態あったっけ・・・
- https://egg.5ch.net/test/read.cgi/software/1648822853/466
名前欄に全角文字使うと書けないらしい
- https://egg.5ch.net/test/read.cgi/software/1648822853/593
○専ブラ「名前」欄に文字を入れた際の挙動 ・「浪人+slip」は失敗する ・半角英数と「-」「_」はOK ・「#」「&」を含むと失敗する ・全角文字を含むと失敗する
名前のところエンコード解除してない疑惑
未確認(少なくともSID取得は問題なかった、一部はdat取得もできた)
- https://egg.5ch.net/test/read.cgi/software/1648822914/137
これってほんもの?
UA: Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: vIyNd18OvKKeRkMmBUqqtEsdLuA8hh HMKey: EowMzHCOOQVJ3xQCfU9iyLu6MwRCN1
UA: Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: hmCELmps15cHN8mL7viOH23nH24EwP HMKey: fOOxqHdfCactc639EMjCF1mUAkG1Lx
UA: Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: CD59oXlsHKztxozKg3m33RsIvCwghQ HMKey: ZqFSgmJt3GXBVoa90QTVftqwODjR0E
UA: Monazilla/1.00 Ciisaa/1.71 Dalvik/2.1.0 (Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3) AppKey: 1n0gDnwQE6st8KPj1qD7dKEWubpp1N HMKey: 3Op2jFmeYpcMfuDwnV8OtXmKu6n8oL
- https://egg.5ch.net/test/read.cgi/software/1645325050/
今来た人用 書き込みの1回目で「制限を設けております」、2回目で「鍵が無効です」となるのは、UserAgentが規制されたから 2chMateのUAの末尾が(Linux; U; Android 10; Pixel Build/QP1A.191005.007.A3)となっているものが規制された あまりに多くの人が使いすぎたから
UAの末尾の部分を適当に変えるだけで回避できる。実在しないものでもよい。実在するものの例は>>634 一つのものを大勢の人が使うとまた規制される可能性があるので適当にでっち上げたものを使うのがよい
- https://egg.5ch.net/test/read.cgi/software/1648822914/404
書き込めない理由はわかったで 書き込み時に本家のChMateはX-2ch-UAがリクエストヘッダに設定されるけどこのソフトでは設定されないからや
- https://egg.5ch.net/test/read.cgi/software/1648822914/441
取り敢えず本家はこんな感じ https://pastebin.com/UjCyrwPJ
それがこのプロキシで
こういう設定をしたときは https://pastebin.com/69uVF6VW
こうなってる https://pastebin.com/R1zsBqbJ
本家のリクエスト文に完全に成りすませばプロキシにたいする規制は理論上不可能
署名が一致しません。はまったやつ原因メモ
書き込みUA等のPostSig計算にかかわるものをUAから設定する(コピペしてくる)時、末尾にホワイトスペースがついてる。
ヘッダで送るときは末尾のホワイトスペースは消されるため、PostSig計算時と文字列が変わる。
- https://egg.5ch.net/test/read.cgi/software/1648822914/929
Torにあったけど使える? https://pastebin.com/9VHdefF2
- https://pastebin.com/9VHdefF2
AppKey: a6kwZ1FHfwlxIKJWCq4XQQnUTqiA1P
HMKey: ZDzsNQ7PcOOGE2mXo145X6bt39WMz6
X2chUA(SID): JaneStyle/4.23
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000
UA(Get): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000
UA(Post): Monazilla/1.00 JaneStyle/4.23 Windows/10.0.22000
AppKey: vIyNd18OvKKeRkMmBUqqtEsdLuA8hh
HMKey: EowMzHCOOQVJ3xQCfU9iyLu6MwRCN1
X2chUA(SID): (None)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 JaneStyle_Android/2.3.1 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
AppKey: 8yoeAcaLXiEY1FjEuJBKgkPxirkDqn
HMKey: F7vFmWCGd5Gzs8hc03NpRvw4bPwMz3
X2chUA(SID): 2chMate/0.8.10.153
X2chUA(Get): 2chMate/0.8.10.153
X2chUA(Post): 2chMate/0.8.10.153
UA(SID): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 2chMate/0.8.10.153 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
AppKey: hmCELmps15cHN8mL7viOH23nH24EwP
HMKey: fOOxqHdfCactc639EMjCF1mUAkG1Lx
X2chUA(SID): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): DOLIB/1.00
UA(Get): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 2chGear/1.1.3 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
AppKey: 1n0gDnwQE6st8KPj1qD7dKEWubpp1N
HMKey: 3Op2jFmeYpcMfuDwnV8OtXmKu6n8oL
X2chUA(SID): Ciisaa/1.71 (A)
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): DOLIB/1.00
UA(Get): Monazilla/1.00 (Ciisaa/1.71 (A))
UA(Post): Monazilla/1.00 Ciisaa/1.71 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
AppKey: CD59oXlsHKztxozKg3m33RsIvCwghQ
HMKey: ZqFSgmJt3GXBVoa90QTVftqwODjR0E
X2chUA(SID): En2ch/1.4.21
X2chUA(Get): (None)
X2chUA(Post): (None)
UA(SID): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Get): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
UA(Post): Monazilla/1.00 En2ch/1.4.21 Dalvik/2.1.0 (Linux; U; Android 10; Pixel 5 Build/SP2A.220305.012)
- https://egg.5ch.net/test/read.cgi/software/1648823127/103
自分で解析した JaneStyle/4.22 のリクエスト文を上げておきます また書けなくなったときの参考にどうぞ
https://pastebin.com/2nLSwx4N
- https://egg.5ch.net/test/read.cgi/software/1648823127/161
これってほんもの?
Live5ch 1.59 AppKey: HnNrwoBmZhuS2Iy7XcfKcNjXWbStay HMKey: Mw1lAicafV2JFefaoBURwgMJ7IqfvM
- https://egg.5ch.net/test/read.cgi/software/1648823127/298
もう一つどうぞ https://pastebin.com/6td60uRg
- https://egg.5ch.net/test/read.cgi/software/1650527885/459
取り敢えずJaneStyleのUAで書けないのはリクエストボディのURLエンコードが小文字になってたのを本家に合わせて大文字にしたら書き込めるな。 ヘッダーもまだ本家と差があるから合わせていかないとな AcceptヘッダがないのとかAccept-Encodingがgzip, indentityじゃなくてgzipだけになってるのとか
ヘッダに関してはBoardSettings.yamlで何とか出来るはずなのでとりあえず特殊対応はしない・・・
URLエンコード結果は大文字になるのが正しいけど、HttpUtility.UrlEncodeは小文字でエンコードする。今回のはこれが原因?(他の串で問題が起きてないように見えることからもそうっぽい??)
HttpUtility.UrlEncode以外の方法はエンコーディングを指定して変換できないので好ましくない(UTF-8決め打ちする)。
ここに提示されているように、正規表現で置換するのが良いかな・・・
Shift-JISのパーセントエンコーディング、めも
ウィキペディア あいうえお
が
%83E%83B%83L%83y%83f%83B%83A+%82%A0%82%A2%82%A4%82%A6%82%A8
になる(スペースは+)。
つまり
ウ : %83E
ィ : %83B
キ : %83L
ペ : %83y
デ : %83f
ィ : %83B
ア : %83A
あ : %82%A0
い : %82%A2
う : %82%A4
え : %82%A6
お : %82%A8
に対応する。
通常のパーセントエンコーディングのデコード方法に従ってデコード(%を取り除いた文字列2文字を16進数値として読む)すると、例えば%83E -> 0x83 Eとなる。この時のエンコーディングは何かを仮定する(この場合shift-jisだと思ってデコードする)。
0x83はshift-jisとして有効な文字ではないので、その次の文字と結合する。その次の文字をAsciiコードで数値に直して結合すると、0x83 E -> 0x83 0x45 -> 0x8345となり、0x8345はshift-jisでのウに対応する。
このとき次の文字も%始まりならまた同様にデコードする、たとえば%82%A0 -> 0x82 0xA0 -> 0x82A0、0x82A0はshift-jis
であに対応する。
つまりは、Shift-JISのパーセントエンコーディングにおいても%xxは%+2文字(半角英数)となるはず。
C#実装テスト
- https://wandbox.org/permlink/WPVvn3p6Akm8d5WJ
この変更で設定そのままでかけたので確定。
- https://egg.5ch.net/test/read.cgi/software/1650527885/655
>>654 参考までに… https://pastebin.com/8Ekw3cm4
2chGearのpost時ヘッダ
feature=confirmedってなんや・・・
- https://egg.5ch.net/test/read.cgi/software/1650527885/764
Androidは全部でてる https://pastebin.com/u/as238
- https://egg.5ch.net/test/read.cgi/software/1650527885/915-916
トランスポートのコネクションは一致させれないの?
BoardSettings.yamlのKeep-AliveをfalseにするとConnectionの行自体が消えるな
これとかヘッダ順序とか、HTTPWebRequestを使わないようにしないとダメそう
Fiddlerにリクエストをやってもらうのがよさそうだけど、今は何でそうしてないんだっけ・・・
- https://egg.5ch.net/test/read.cgi/software/1650527885/950,953
20連投すると 鍵が失効しています IP変えたら書ける もしくは串ではないJaneからIP変えなくても書き込める
20連投じゃなくて5回Monaキー再取得のほうかな 5連投でUA替えてるから5回目でアウト
- https://egg.5ch.net/test/read.cgi/software/1650527885/990-991
俺の見立て 短時間に連投もしくはMonaキー取得を繰り返し行うとIPアドレスが要注意リストに載り 5回目の再取得で鍵が失効
その目をつけられてしまったIPからのMonaキー取得は JaneStyleで1回目の取得であっても5回目扱いとなり鍵が失効する
IPアドレスがブラックリスト(≠BBX)に載らない程度のもっさり連投だったんだろう 45秒で5連投して4分以内に5回目のMonaキー再取得を行うくらいの連投じゃないと
- http://egg.5ch.net/test/read.cgi/software/1651990538/2-4
IPアドレスがブラックリスト(≠BBX)に載るレベルの(45秒で5連投)書き込みを行い Monaキー取得を繰り返し行うとIPアドレスが要注意リストに載り 5回目の再取得で鍵が失効
その目をつけられてしまったIPからのMonaキー取得は JaneStyleで(クッキー削除して)1回目の取得であっても5回目扱いとなり鍵が失効する
VPN探してて既に他の人によってこれにされてしまっているIPを使った時、 串が原因かといろいろ設定変える無駄が減る
前スレでpovo2.0で再現できなって言ったけどさっき書き込んだスレを確認したら勝手にIDがコロコロしてた
今はコロコロしなくなったからまた試したら、確かに短時間に何回も鍵を更新すると、そのIPには5回目からは失効した鍵しか渡されなくなった
- http://egg.5ch.net/test/read.cgi/software/1650924150/188
色々と実験をして「ERROR: 不正取得を検出しました」を出す事に成功した IPを変えれば回避できる
- https://egg.5ch.net/test/read.cgi/software/1649749366/647
>>639 多分6時間くらいで解除される気がする
- https://egg.5ch.net/test/read.cgi/software/1651990538/187
>>186 俺も今PCから書き込むと串規制(101)が出て書けないんだよね 有志がpastebinに貼ってくれた例のUAとKEYだと書けなくなってるんだろうけど代わりのが見つからんから詰んでるわ どうしたら良いんだ
- https://egg.5ch.net/test/read.cgi/software/1651990538/195
AppKeyとHMKeyそのままで書き込み用UAを実在のものに変えてもダメだね 参ったわ 8853 Detect invalid proxy.; って出る
- https://egg.5ch.net/test/read.cgi/software/1651990538/217
PCから来たID:QNOehZwI0だけど書けたわ、原因が分かった 恐らく運営側は今「独自のUserAgent」を持ってる書き込みを規制してるんじゃないか? みんな↓みたいなUA設定してるでしょ?
Monazilla/1.00 BROWSER_NAME/BROWSER_VERSION Dalvik/2.1.0 (Linux; U; Android 10; XXX/YYY)
これのXXX/YYY部分だけ変えてCookie削除したら書き込めた、それ以外は一切弄ってない 逆に言うとこのXXX/YYY部分で汎用的な機種名の入ったUA使ってない場合、悪目立ちして規制されることがあるっぽい 俺は「Chinko Build/454545.191919」とかにしてたから不興を買ったのかも知れん
なるほど(ちょっと笑ったw
- https://egg.5ch.net/test/read.cgi/software/1651990538/300
Monakey再取得し過ぎによる「ERROR: 不正取得を検出しました」への対策は 書き込める設定+Monakeyが記載されたバックアップしておくべきsetting.xmlをまだ所持したことが無い者にとってはIP変えるしかないのが現状なのかな
既に「ERROR: 不正取得を検出しました」が出されたIPで 有効なMonakeyを新たに5chから発行してもらえるようになる条件が そのIPに対する既存の有効なMonakeyの自然失効だとしたら実質2週間規制?
- https://egg.5ch.net/test/read.cgi/software/1651990538/301
2日待ったら解除されたよ
- http://egg.5ch.net/test/read.cgi/software/1652118538/234
■鍵(MonaKey)について
5chは2022年3月から専ブラ用にAPI経由の新しい書き込み方式(以下、新方式)が導入され、JaneStyleはv4.20以降で対応した 従来の書き込み方式(以下、旧方式)は移行期間を経て2022年4月未明に停止された模様
新方式では専ブラがインストールされた各クライアント環境毎にユニークな鍵(MonaKey)が5chから発行され、書き込み時の認証に使用される 鍵(MonaKey)には有効期限(現状で1~2週間)があり、定期的に更新の為の同意が求められる 5ch側は規制として鍵(MonaKey)をBANする事が出来、BANされた鍵(MonaKey)では書き込みが拒否される
■鍵(MonaKey)関係の主なエラーメッセージ
・「ERROR: 鍵の有効期限が切れています。」 →1~2週間で発生。[同意]をすれば鍵が更新される。
・「ERROR: 鍵が失効しています。」 →何らかの理由で鍵が失効している。[同意]をすれば鍵が更新される。
・「ERROR: 鍵が一致しません。 」 →何らかの理由で鍵が合わず使えない。[同意]をすれば鍵が更新される。
・「ERROR: 鍵が無効です。 」 →鍵が規制でBANされている。規制解除を待つか鍵の削除が必要。
・「ERROR: 不正な取得を検出しました。」 →鍵の取得を同じIPで短時間に繰り返すと発生。IPが規制されている。規制解除を待つかIPの変更が必要。
- https://egg.5ch.net/test/read.cgi/software/1651990538/409
ソフトウェア板でRock54 Mango板で確認しようとしたら ERROR: 不正取得を検出しました nonceの設定間違ってたがそれまでは普通に書けてた IP変更とnonceの設定正したら復帰出来た NGWordとか他の何かの規制に引っ掛かると不正な串判定をチェックされるのか或いは板に依るのか 全てで厳密なチェックはしていないみたいね