2chproxy (JScript.NET)


概要

htmltodatByFiddler の簡易版であり、さらにAPIモードが使える串である。
Fiddler のインストール不要、htmltodatByFiddler のようなソースコピペ不要で動作する。
ソース提供であるため、JScript.NET および C# の知識があれば、自分用にカスタマイズして使用することも可能。
2017/03/09付けの改良版では、新 read.cgi 対応を含め、下記のカスタマイズ類が一部反映されている。

作者  
動作環境 Windows(※要 .NET Framework 2 以降。WindowsVista以降ならインストール不要)
動作タイプ API
HTML
最新版 - (※2015/03/05 23:16 更新)
http://www1.axfc.net/u/3429464
改良版 - (※2017/03/14 20:45 更新)
OneDrive画面上部の「↓ダウンロード」をクリックし、ZIP形式でDL
https://1drv.ms/f/s!ApHu7XiLGpCpc8_Bl2XUGSYspdU

(関連レス)

 FiddlerCore + JScript.Net(+C#)
 インストール不要+自動コンパイル(Win7未満は要.NET) 32bit標準

 ・機能
 API+過去ログはhtmlから変換(+scでクロールスレ非表示)
 Rangeも対応

 portはproxy.csにて設定
 keyはPlugin_api_dat.jsにて設定


使い方

■準備
1) ダウンロードした www.dotup.org199885.zip 内の 2chproxy フォルダを、適当なフォルダ(D:\2chproxy\ など)に解凍します。

■実行
1) 2chproxy フォルダにある proxy.bat を実行します。
2) コンソール画面が以下の様に表示されれば串起動完了です。
 なお、初期実行状態ではHTMLモードとして起動されます。

(.NET Framework関連のメッセージ群)
 LoadPlugin: .\Plugin_api_dat.js
 LoadPlugin: .\Plugin_html2dat.js
 LoadPlugin: .\Plugin_show_sc_only.js
 Proxy listen port: 8081
 _

 ※もし、2)のメッセージ以外または proxy.bat が終了してしまう場合は、.NET Framework に問題が有ると思われます。
3) 専ブラ側では、鯖を localhost に、ポートを 8081 に設定して下さい。

※毎回自動コンパイルするので、出来るだけ無駄な処理をさせたくない場合は、ページ下部にある補足を読んで下さい。

動作原理

■ソースファイルの一覧
1) 2chproxy では、以下の JScript.NET および C# によって、dat取得を行います。
 ・p.js … 起動プログラム(p.exe)作成用。.dll および .js の読み込み。
 ・Plugin_api_dat.js … APIモードによるdat取得用。
 ・Plugin_html2dat.js … HTMLモードによるdat取得用。
 ・Plugin_show_sc_only.js … 2ch.sc でスレ一覧からクロールスレを非表示。
 ・proxy.cs … 本当のメインプログラム。通信ポート(8081)を設定。

■APIモードの設定
1) 解凍後のそのままでは、2chproxy はHTMLモードで動作します。
2) APIモードで動作させる場合には、2chproxy\src フォルダにある Plugin_api_dat.js

 static var AppKey = "ここを修正";
 static var HMKey = "ここを修正";

 を修正して下さい。また、UA値を変更したい場合、

 static var StyleVersion = 3.83;

 static var UA = {
  Auth : "Mozilla/3.0 (compatible; JaneStyle/"+ StyleVersion +")", // 3.82よりDAT読込み用と同じ値
  XAuth : "JaneStyle/"+ StyleVersion,
  Read : "Mozilla/3.0 (compatible; JaneStyle/"+ StyleVersion +")",
  Write : "Monazilla/1.00 (JaneStyle/"+ StyleVersion +")"
 };

 の様に適宜修正して下さい。
3) キーが設定されてなかったりAPIモードが認証エラーなどで失敗した場合には、自動的にHTMLモードに切り替わります。

■2ch.scでのクロールスレ非表示
1) 2chproxy\src フォルダにある Plugin_show_sc_only.js は、2ch.sc のスレ一覧よりクロールスレを除外し、2ch.sc 独自のスレ(スレタイの先頭に★が付いている)のみを表示させます。


カスタマイズ

■dat取得機能の変更
1) 2chproxy は実行時に、2chproxy\src フォルダの JScript.NET(*.js) ファイルを毎回読み込む仕様となっています。
2) よって、読み込ませる ファイル を変更することにより、2chproxy の動作を変えることができます。

●APIモード + HTMLモードにする場合
 何もする必要はありません。
 dat取得はAPIモード、過去ログ取得はHTMLモードで動作します。

●APIモードのみにする場合
 Plugin_html2dat.js および Plugin_show_sc_only.js をリネームし、拡張子 .js 以外のファイル(テキストファイルなら *.txt)などにします。
 実行時には、Plugin_api_dat.js のみが実行されます。
 なお、コンソール画面は以下の様になります。

 LoadPlugin: .\Plugin_api_dat.js
 Proxy listen port: 8081
 _

 ※HTMLモードによる過去ログ取得が出来なくなるので注意。
  なお、浪人アカウントがあれば、後述の「浪人によるAPIモードでの過去ログ取得」対応により過去ログが取得できます。

●HTMLモードのみにする場合
 Plugin_api_dat.js および Plugin_show_sc_only.js をリネームします。
 実行時には、Plugin_html2dat.js のみが実行されます。
 なお、コンソール画面は以下の様になります。

 LoadPlugin: .\Plugin_html2dat.js
 Proxy listen port: 8081
 _


●2ch.scにてクロールスレを表示/非表示にさせる場合
 2ch.scにてクロールスレも表示させるには、Plugin_show_sc_only.js をリネームします。
 実行時には、Plugin_api_dat.js および Plugin_html2dat.js が実行されます。
 なお、コンソール画面は以下の様になります。

 LoadPlugin: .\Plugin_api_dat.js
 LoadPlugin: .\Plugin_html2dat.js
 Proxy listen port: 8081
 _

 2ch.scのみ利用で、かつクロールスレを非表示させるには、Plugin_api_dat.js および Plugin_html2dat.js をリネームします。
 実行時には、Plugin_show_sc_only.js のみが実行されます。
 なお、コンソール画面は以下の様になります。

 LoadPlugin: .\Plugin_show_sc_only.js
 Proxy listen port: 8081
 _

 なお、APIモードのみ、またはHTMLモードのみと併せて、Plugin_show_sc_only.js を実行させることも可能です。

■PINKちゃんねる対応

 688 :名無しさん@お腹いっぱい。 [sage] :2015/03/13(金) 19:18:51.87 ID:OtUaTPQa0
 >>668
 Plugin_html2dat.jsの 81行目あたりを
 var ex = /^([^\.]+)\.(2ch\.net|bbspink\.com)\/([^\/]+)\/(subject.txt|dat\/(\d+)\.dat)/i;
 に書き換えた後
 86行目を
 if (match[4] == "subject.txt"){
 に、90行目を
 oS.url = match[1] + "."+match[2]+"/test/read.cgi/"+ match[3] + "/" + match[5] + "/";
 にすればおk


■HTMLモードでのUA値変更
1) 2chproxy\src フォルダにある Plugin_html2dat.js の80行目辺りで、UA値を設定するステップを

 static public function BeforeRequest(oS : Fiddler.Session){
  var ex = /^([^\.]+)\.2ch\.net\/([^\/]+)\/(subject.txt|dat\/(\d+)\.dat)/i;
  var match = oS.url.match(ex);
  oS.oRequest["USER-AGENT"] = "ここにWebブラウザのUA値を記述";
  if (!match) return;

 の様に追加します。

■通信ポートの変更
1) 2chproxy デフォルトの通信ポート(8081)を変更したい場合、2chproxy\src フォルダにある proxy.cs

 static int listenPort = 8081;

 を他のポート番号に修正して下さい。また、専ブラ側も合わせて変更します。

■専ブラでのdat差分取得対応
1) HTMLモードにて、専ブラのローカル保存ログまたはキャッシュ保存データを参照して、dat差分取得する方法です。
 カスタマイズされた Plugin_html2dat.js を使用することで対応可能です。詳しくは、Tipsを参照。

■浪人によるAPIモードでの過去ログ取得
1) まず、APIモードが使える状態にあることが前提です。
2) 2chproxy\src フォルダにある Plugin_api_dat.js に、浪人ログインのアカウント情報の変数を

 static var RoninID = "ユーザID";
 static var RoninPW = "パスワード";

 の様に追加します。
3) Authenticate() 関数内の認証用URLへのキーワード設定部分を

 if (!RoninID | | !RoninPW)
   var data = String.Format("ID=&PW=&KY={0}&CT={1}&HB={2}", AppKey, ct, hb);
 else
   var data = String.Format("ID={0}&PW={1}&KY={2}&CT={3}&HB={4}", RoninID, RoninPW, AppKey, ct, hb);


 の様に修正します。

ソース修正後の対応

1) APIキー修正やバグ修正などのカスタマイズで JScript.NET および C# ソースを修正した場合、p.exe を実行するバッチファイル(proxy.bat の方ではなく)またはショートカットを再実行するだけで、修正内容が即時反映されます。
2) バッチファイルまたはショートカットが即終了してしまう場合は、修正した内容に誤りがありますので、再度、修正内容を確認して下さい。

補足

■proxy.batについて
www.dotup.org199885.zip に同梱されている proxy.bat ですが、このバッチファイルでは以下の処理を行っています。
 【1】.NET Framework の最新ver.を検索
 【2】.NET Framework の JScript.NET コンパイラで p.js をコンパイルし、p.exe を生成
 【3】proxy.cs を引数として、p.exe を実行
そのため、2chproxy を起動するために proxy.bat を実行させていると、実行の度に p.js をコンパイルして p.exe を生成するという無駄な処理が発生します。
また、p.exe の元である p.js は、カスタマイズする必要がないため、再コンパイルは不要です。
よって、p.exe のみを実行するバッチファイルまたはショートカットを作成しておくと、無駄な処理を省くことが出来ます。
※最近の PC ならコンパイルも一瞬で行われるので、気になる方だけ。

自動コンパイルを省く方法

■準備
1) ダウンロードした www.dotup.org199885.zip 内の 2chproxy フォルダを、適当なフォルダ(D:\2chproxy\ など)に解凍します。

■初期実行
1) 2chproxy フォルダにある proxy.bat を実行します。
2) コンソール画面が以下の様に表示されたままになるので、一旦Ctrl+Cで proxy.bat を終了させます。

(.NET Framework関連のメッセージ群)
 LoadPlugin: .\Plugin_api_dat.js
 LoadPlugin: .\Plugin_html2dat.js
 LoadPlugin: .\Plugin_show_sc_only.js
 Proxy listen port: 8081
 _

3) もし、2)のメッセージ以外または proxy.bat が終了してしまう場合は、.NET Framework に問題が有ると思われます。
4) 2chproxy\src フォルダに p.exe が作成されていることを確認します。

■2回目以降の実行
1) "p.exe proxy.cs"を実行するためのバッチファイル(*.bat)またはショートカット(*.lnk)を作成します。
 ◆バッチファイル例(2chproxy フォルダに作成)

  @ECHO OFF
  SET SRCDIR=.\src

  IF EXIST %SRCDIR%\p.exe (
    cd %SRCDIR%
    p.exe proxy.cs
    cd ..\
  )
  @ECHO P.EXE NOT FOUND!!
  PAUSE

 ◆ショートカット例(p.exe のショートカットを作成)
  2chproxyショートカット.png
2) 以降は、1)で作成したバッチファイルまたはショートカットを実行することで、串が動作します。


Tips

ウインドウを非表示で起動するVBS

ウインドウが出ないため、p.exe が起動してるかどうかはタスクマネージャで確認します。
p.exe を終了させるのもタスクマネージャから、プロセス終了で行って下さい。


CreateObject("WScript.Shell").Run """C:\フォルダ名\src\p.exe"" ""proxy.cs""",0


テキストファイルを作成し、上の1行をコピペして、(適当な名前).vbs で保存します。
なお保存先は、C:\フォルダ名\src フォルダにしないと「ファイルが見つからない」のエラーとなるので注意して下さい。
C:\フォルダ名 は適当に書き換えます。
次からは、vbs をダブルクリックで起動します。

最後の「,0」は、ウィンドウの表示(1)・非表示(0)。
最後の「,0」の後は、改行しないこと。半角スペースもNG。

(例)

CreateObject("WScript.Shell").Run """D:\2chproxy\src\p.exe"" ""proxy.cs""",0




※ショートカットをいじって「最小化」という手も。

【1】 p.exe を右クリック → ショートカットの作成
【2】 ショートカット を右クリック → プロパティ → 実行時の大きさを「最小化」


dat差分取得(JaneStyleの保存ログにも対応)

HTMLモードにて、datをキャッシュをして差分取得する方法です。
JaneStyle のローカル保存ログを参照することも出来ます。


 17 :名無しさん@お腹いっぱい。 [sage] :2015/03/17(火) 22:20:21.51 ID:MgfbWHvQ0
 12 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/03/17(火) 22:06:00.01 ID:AewkLE540
 こっちが先かな?
 2chproxy(dotnet版)で新着分だけ取得するようにしてみました。

 Plugin_html2dat.js
 ttp://pastebin.com/c8vGdsuh (※削除済み)

 proxy.cs
 ttp://pastebin.com/B4xeznEz (※削除済み)

 jane2chbrdPath と datFolderBase に適切なパスを入れるとローカルにあるdatの
 続きから読むようになります。JaneViewのみでの確認ですが同じJane系なら機能するかも。
 無指定なら最初の1回だけ全レス取得して2回目以降はその続きを読むようになります。

 noMemoryCache を1にするとメモリ上にキャッシュせず毎回ローカルのdatから読むようになります。
 datがなければ毎回全レス取得して、専ブラが欲しがっていると思われるところだけ返します。

 これまでのパッチも入っています。
 ・bbspink対応
 ・「サイズが合わない」問題に対応

 あとコマンドプロンプト上でQを押すと終了するようにしてあります。
 dotnetは素人なので詳しい方のクリンナップに期待(ちなみに2chproxyオリジナルの作者じゃないです)


 411 :名無しさん@お腹いっぱい。 [sage] :2015/03/19(木) 03:41:24.72 ID:2g7PJ/uv0
 >>17
 style 3.75で使うなら
 Plugin_html2dat.jsの184行目を
 var ex = /^([^\.]+)\.(2ch\.net|bbspink\.com)\/([^\/]+)\/(subject.txt|dat\/(\d+)\.dat)/i;
  ↓
 var ex = /^([^\.]+)\.(2ch\.net|bbspink\.com)\/([^\/]+)\/(subject.txt|(?:dat|kako\/\d+\/\d+)\/(\d+)\.dat)/i;

 という風にしないとdat落ちしたスレを読み込めないかも



dat差分取得(無キャッシュ省エネ版)

datはキャッシュせずに、レス番号およびサイズをキャッシュして差分を取得します。
なお、ローカル保存datには未対応です。


 891 :名無しさん@お腹いっぱい。 [sage] :2015/03/26(木) 02:20:38.34 ID:kiPi6opy0
 >>3とは関係無いんだけど、2chproxyのhtml2dat.jsで差分だけ取得する版(pinkとかちゅとギコ用対策も含む)
 http://pastebin.com/xB4yXNaN

 一度アクセスしたdatのレス番とサイズを覚えておき次回からそれを利用する
 datのキャッシュはしないのでメモリがどんどん増えていくことは無いと思う

 自分用に作ってたんだけど>>3のを改造した方がいいのかな



自動コンパイルを省く方法2


 797 名無しさん@お腹いっぱい。 [sage] 2015/03/30(月) 19:54:22.17 ID:yUXOPDuw0
 >>776 >>789
 http://pastebin.com/bEQC7uAd
 実行ファイルキャッシュして二回目以降のコンパイルを省く機能と
 バックグラウンド実行も可能(中身読んで弄ってね)にさせたproxy.bat

 ただしバックグラウンド実行はQで終了させる機能だと動かないぽ


.NET4に対応したFiddlerCore4.dllへの置き換え

www.dotup.org199885.zip に同梱の FiddlerCore.dll (v2.4.9.8) は .NET Framework 2.0 用のため、最新の .NET Framework 4.0 以降の環境に対応した FiddlerCore4.dll (v4.6.2.0) に置き換える手順です。
なお、FiddlerCore4.dll が今後バージョンアップした場合にも、この手順を再度行って下さい。

1) FiddlerCore の公式サイト http://www.telerik.com/fiddler/fiddlercore より、fiddlercoreapisetup.exe をダウンロードします。
2) ダウンロードした fiddlercoreapisetup.exe を実行し、適当な場所に FiddlerCoreAPI フォルダを作成させます。
3) 作成された FiddlerCoreAPI\DotNet4 フォルダにある FiddlerCore4.dll を 2chproxy\src フォルダにコピーし、代わりに元からある FiddlerCore.dll を削除します。(FiddlerCore4.dll のバージョンアップ時は上書きコピーのみ)
4) 2chproxy フォルダの proxy.bat を実行し、2chproxy\src フォルダにある p.js を自動再コンパイルして p.exe を再作成します。
5) 以上で、今まで通りに、かつ最新の .NET4 に対応した 2chproxy (JScript.NET) が使用できます。
6) もし、FiddlerCoreAPI フォルダが不要の場合、FiddlerCoreAPI をアンインストールしても構いません。

  • 最終更新:2017-03-15 15:28:14

このWIKIを編集するにはパスワード入力が必要です

認証パスワード