Closed onihusube closed 1 year ago
参考になるかもしれない要望等
yaml2つ読んでくれるようにならないかな _default : だけxmlの方に保存でもいいけど pink と 板別設定は一律だけど _default : だけはkeyと結び付いてるので
余所規制と同じ状態になって来たのでやっぱ板別設定出来るようになって欲しいな 設定別に多重起動しておいて専ブラ側で手動でポート切り替えるのはちょっと手間。切り替え忘れて鍵無効なるし
UAのWinVerとか泥のDalvikを複数登録しておいて書ける組み合わせを自動で探して板別設定として保持してくれたら完璧 その際、不正取得なったらこれも自動でIP変えてくれたら神 IP変えられるかどうかは契約回線サービス次第だけどIP変更してくれるソフトとかあるから技術的に不可能てことは無いと思うんだが
ただ、新しい書き込み仕様の噂も立ってるから使い回せなくてガックリ来るような機能の実装は避けた方が良いだろうけど板別の機能は無駄にはならないと思うんよね 作者さん頼りで申し訳ないが頑張って欲しい
モチベ湧かんなら寄付の窓口用意してみるとか 更に下がる可能性もあるが
専ブラ事の新書き込み時リクエストの多様性、mateを基本とすると
X-2ch-UA
ヘッダがない000
作者さんが 「UA別プリセットの検討」 を始めて下さったようです 皆さん情報提供、エールをお願いします Githubはアカウントが無いと投稿出来無いようですのでこちらに投稿させて頂きます
デメリット 設定ファイルが増える
のは各設定を整理されると思えば問題無いんじゃないでしょうか
書き込み関連設定のほとんどがUIから制御できなくなる UIの設定は読み込みに関するもの、という分離にはなる・・・?
これです。"専ブラ←→串"間と"串←→5chAPI"間の設定の分離
UIと設定項目の重複がある
重複はなるべく避けたいですね
設定変更に再起動が必要
リロード可能な方が良いですがそれが手間なら再起動でも問題無いかと
何か気付きや参考になればと思い、素人ながらプリセット(プロファイル)仕様を考えてみました
APIKey,HMKey,書き込みやスレ立てのヘッダーとその値類をテンプレート化 "./template/2chMate_0.8.10.153.tpl" 各tplファイルのAPIKey,HMKeyを空欄にしておき、そこだけユーザーに書き込んでもらう この部分がテンプレート化するメリットとして根本的な仕様変更以外は有志による対応が可能に 今後、専ブラ毎にSIDやMonakeyの計算式が違って来たりした場合、それらもテンプレートとする事で有志に任せ本体側更新の手間を減らせられます Winver.txt,Dalvik.txtにUA後半の固有情報羅列。UIから選択時に使用 profile.ini かsettings.xml に iniの場合: [PF1] name=2chMate/0.8.10.153 Dalvik/2.1.0 (省略)#UIプロファイル選択欄に表示されるプロファイル名 type=2chMate_0.8.10.153.tpl#POSTに使用するテンプレート Dalvik=Dalvik/2.1.0 (省略)#.tplと組み合わせられるUA後半ユーザー固有機種OS等情報 key=#Monakey [PF2] name=JaneStyle/4.23 Windows/10.0.22000 type=JaneStyle_4.23.tpl Winver=Windows/10.0.22000 key= こんな感じで "テンプレート(偽装専ブラ)" + "UAのユーザー固有部分" を組み合わせプロファイル化 デフォルトや板別などをプロファイルにて指定 UIからのプロファイル作成時はテンプレートと対応した固有情報部分(Winver.txt|Dalvik.txt)をプルダウンで選択し保存 プロファイル名をそれらから自動で出力しつつユーザーが名前変更可能 テンプレート側にWinverかDalvikどちらと組み合わされるかの情報が必要
通知アイコン右クリックメニューに[プロファイル→] マウスオーバーでプロファイル名と「解除」をズラッと表示し選択で現在のプロファイルを一時的に変更 [解除]で一時変更を解除し設定してあるデフォや板別に従う、みたいな
肝心なテンプレート化のメリットとして StyleやLiveのスレなどでどこどこの板はWindows/10.0.22000では書けないけどWindows/10.0.25151では書けるといった情報が共有されており 板依存の規制ではWinver違いのプロファイルを複数用いることが想定されます 分けて居ない場合、設定データが無駄に重複して大きくなってしまいます 共通部分としてテンプレート化することで設定データをスッキリさせられます
🙏🙏🙏🙏
板毎にUAのバージョン部が異なりうると言うのは盲点だった。
板毎設定(BoardSettings.yaml
)の方で指定したUAで置換するようにすれば割と自然にフィットしそう。
将来的に他の部分が変わる場合は・・・プリセットの重複を許容する?
そうなると、共通も含めた板毎設定で使用するプリセットを指定して使用するようにして、UIの書き込みUAから自動判別のやり方はなしかな
UI上でプリセットを指定できるようにする(タスクトレイのメニューも含めて)のは多分将来の方向性で、そうなると板毎設定の共通設定との兼ね合いをどうするか
1つのプリセットに必要なプロパティ、暫定
// nonce値の表記の指定
public enum NonceTypeEnum
{
Sec = 0,
Milisec,
MilisecZero,
MilisecRandom
}
// リファラの種類の指定
public enum RefererTypeEnum
{
BoardURL,
ThreadURL,
ThreadURLl50
}
// 1つのプリセットを表すクラス
public class PostSettings
{
public string UserAgent { get; set; }
public string AppKey { get; set; }
public string HMkey { get; set; }
public string X2chUA { get; set; }
public string PostFiledOrder { get; set; }
public string ThreadPostFieldOrder { get; set; }
public NonceTypeEnum NonceType { get; set; } = NonceTypeEnum.Milisec;
public RefererTypeEnum RefererType { get; set; } = RefererTypeEnum.ThreadURL;
public bool KeepAlive { get; set; } = false;
//public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; } = new Dictionary<string, string>();
}
ContentType
の指定はヘッダ指定としてやったほうが良いかな?
Dictionary<string, PostSettings>
みたいなのに入れて、プリセット名から引き当てる。こうなると、板別設定はプリセット名とUA(とお絵描き?)くらいしか指定するものがなくなり、板別共通設定はpink専用になりそう。
monakeyの保存は現在同様settings.xml
にシリアライズして行う。
monakeyはUAとセットで扱う。その際問題になるのはDictionaly
がxmlselalizer
でシリアライズできないこと。
そのため、(UA, monakey)のペアの列を1つの文字列としてシリアライズする。その際さらに問題なのは、ペア間の境界とペア内でのUAとkeyの境界判定。UAには任意の文字が入るし、monakeyも何か仮定できそうにない。
何かしらエンコードしてその結果に表れない文字でつないでいく
URLエンコードすることにする。URLエンコードをE(...)
であらわして、次のように文字列化
E(UA1):E(monakey1)&E(UA2):E(monakey2)&...&E(UAn):E(monakeyn)
ひとまず必要なくなったっぽい
基本構想
preset.yaml
のようなファイルを導入して、ここにUA別にプリセットを書いておいて読み込ませて使用するようにするとする。みたいな構文を想定。
BoardSettings.yaml
の各設定には新しいPreset
のようなプロパティを追加して、これによって板毎に参照するUA設定を制御する。検討項目
書き込みUAとプリセット名のマッチングをとって、使用するプリセットを自動選択するBoardSettings.yaml
で使用するプリセットを指定する1と2を両立するsettings.xml
に1つの文字列にして保存関連
2 #6
ご意見等ありましたらご自由にどうぞ