山田偽研

CCB マニュアル

1 インストール&アンインストール

1−1 実行に必要な実行環境

CCBを実行するためには,下記の実行環境が必要です.

1−1−1 .NET Framework

このソフトを利用するためには,事前にMicrosoft .NET Framework 4.5.1もしくは3.5をインストールしておく必要があります.ご自分の環境に合わせたパッケージを以下のリンクから取得してください.

1−2 インストール

ZIP圧縮ファイルを適当な場所に解凍したらそのまま起動できます.

以降,解凍したフォルダを"{CCB}"フォルダと呼ぶことにします.

設定フォルダの配置方法によって,様々なユーザーモードで動作します.

1−2−1 シングルユーザーモード
{CCB}\single\

というフォルダを配置すると,CCBはシングルユーザーモードで動作します.異なるユーザーが実行しても設定は必ず"single"フォルダに格納されるので,同じ設定を共有することになります.

1−2−2 マルチユーザーモード

"{CCB}\single\"フォルダが存在しない場合,

{AppData}\CCB\
{AppData}
XPまで C:\Documents and Settings\ユーザー名\Application Data\
Vista以降 C:\Users\ユーザー名\AppData\

というフォルダが自動的に作成され,CCBはマルチユーザーモードで動作します.ログインユーザーごとに個別の設定を所有することができます.

1−3 バージョンアップ

バージョンアップは"{CCB}"フォルダにすべての新規ファイルを上書きするだけで完了です.

何らかの理由で,初期設定が壊れたり,設定をロールバックしたい場合は,設定ファイル(CCB.XML)を削除して再起動すると,デフォルト状態の設定ファイルを再生成します.

1−4 アンインストール

アンインストールは"{CCB}"フォルダのすべてのファイルを削除します.

マルチユーザーモードの場合は初期設定フォルダの削除も忘れないように気をつけましょう.

2 概要

大まかに言うと,CCBには以下の4つの機能があります.

名称 説明
採集 Proxyリストをウェブサイトから取得
検査 Proxy経由で試験接続を行い,生存確認や応答性能を検査
診断 Proxy経由で診断サイトにアクセスして,個人情報の漏洩を診断
照会 Proxyの国籍や所有者情報を照会

これらの機能を個別に実行することはもちろん,各コマンドを予め決められた順番に自動操縦することも可能です.さらに,CCB起動時にコマンドラインオプションをセットすれば,自動操縦+結果保存+CCB終了の一連の操作(バッチジョブ)を行うこともできます.ユーザー作成のバッチファイルと組み合わせて使えば,CCBをよりストラテジックに活用できるでしょう.

検査や診断の結果を吟味する際に,強力な検索機能を利用することができます.例えば,「国籍が中国,種別がA以上,応答時間が2秒以下の項目」という複雑な条件の検索でも,

国籍//@i china and 種別 >= A and 応答 < 2

と1行の検索コマンドに収めることができます.

ちなみに,単なる文字列による検索もできます.面倒くさがりの皆さんはご安心を!

吟味の結果,選び抜いたProxyをウェブブラウザに適用する一番簡単な方法は「コピー&ペースト」です.しかし,ダウンローダーなどのように複数のProxyを満遍なく適用する用途には,様々な書式のファイル出力ができる「保存」機能を使うと良いでしょう.

3 ツールバー

3−1 AutoExec.png 自動

主要コマンドを予め決められた順番に自動操縦します.

3−1−1 自動操縦(採集→検査)

採集検査 の順番に実行します.

3−1−2 自動操縦(採集→検査→診断)

採集検査診断 の順番に実行します.

3−1−3 バッチジョブ

起動時に下記のようなコマンドラインオプションをセットすると,起動と同時に自動操縦を行い,結果をLST形式保存して,CCBを終了します.

注意
実行中のCCBがプロセスにある場合はバッチジョブを起動できません.
>CCB /auto{mode}="{保存ファイルパス}" /site={採集先番号}
コマンドラインオプション
{mode} モード
1 採集→検査→保存→シャットダウン
2 採集→検査→診断→保存→シャットダウン

{保存ファイルパス}に結果を記録するファイルパス名を設定します.

ファイルパスの命名は,固定名以外に以下の環境変数を使った方法もあります.

環境変数 説明
[date] 今日の日付(書式=yyyyMMdd)
[time] 現在の時間(書式=HHmm)
[y,M,d,h,H,m,s,-,_,
年,月,日,時,分,秒]
現在日時(書式=ユーザー指定)
[num] 回避番号(1)(開始番号=1,桁数=可変)
[数字] 回避番号(1)(開始番号=任意,桁数=固定/可変(2)
注意1
"回避番号"とはパス名重複を回避するために自動的に繰り上がる番号です.
注意2
ゼロから始まる数字の場合は桁数固定です.

{採集先番号}採集先のメニュー順位で指定します.番号は*全ての採集先をゼロ番として付番します.

siteの設定は省略することが可能です.その場合は,前回終了時のメニュー順位のまま採集を行います.

実行&終了

バッチジョブの途中でエラーが発生した場合は,残りのコマンド実行を取りやめて,すぐにCCBを終了します.バッチジョブの実行中に中止コマンドを実行しても,同様にCCBを終了します.

バッチジョブの進行状況は"{保存ファイルパス}.LOG"という名前のファイルに記録します.

バッチジョブは"CCB.LST"(デフォルトのリストファイル)に記録を残さないので,次回マニュアル起動時は前々回の"CCB.LST"の内容から再開します.

>CCB.exe /auto1="D:\Users\hoge\hage\[date]-[time].LST" /site=0
>CCB.exe /auto2="D:\Users\hoge\hage\TEMP-[num].LST"
>CCB.exe /auto2="D:\Users\hoge\hage\TEMP-[001].LST"
注意
ファイル名以外の上位ディレクトリ名に環境変数を適用しても展開できませんのでご注意ください.

3−2 GetProxy.gif 採集

Proxyを採集先から取得します.

採集後に"重複項目削除""シャッフル"などの操作を施すこともできます.

3−3 CheckProxy.gif 検査

Proxyを経由してターゲットアドレスに試験接続して,生存確認や応答時間を検査します.

具体的な手順は2ステップに分かれます.最初にProxyを経由せず直接接続してターゲットの正確なサイズを計測しておきます.そして,項目ごとのProxyを経由しての試験接続を行って,両者を比較することで検査結果を導出するわけです.

結果はリストの該当カラムに表示します.

3−3−1 検査(全項目)

全項目を対象に検査します.

ただし,既に検査済みの項目は除外します.

3−3−2 検査(選択項目)

選択項目を対象に検査します.

ただし,既に検査済みの項目は除外します.

3−4 DiagProxy.png 診断

Proxyを経由して診断CGIに接続して,個人情報の漏れ具合を診断します.

診断CGIのアドレスは"オプション設定|診断"から設定します.

結果はリストの診断カラムに表示します.

3−4−1 診断(検査項目)

全ての検査項目(検査に成功した項目)を対象に診断します.

ただし,既に診断済みの項目は除外します.

3−4−2 診断(選択項目)

選択項目を対象に診断します.

ただし,既に診断済みの項目は除外します.

3−5 WhoisProxy.png 照会

Proxyの国籍や所有者情報をWhoisサーバーに照会します.

Whoisサーバーのアドレスは"オプション設定|照会"から設定します.

結果は既定のウェブブラウザに表示します.

注意
Whoisサーバーに負荷をかけないようにするために,複数項目を選択しても先頭項目だけしか照会しません.

3−6 Stop.png 中止

自動操縦採集検査診断 コマンドを中止します.

3−7 GoUp.gif GoDown.gif 項目を上下に移動

選択項目を上下に1行移動します.

3−8 Shuffle.png 全項目をシャッフル

全項目の並び順をシャッフルします.

3−9 Delete.png 削除

3−9−1 選択項目を削除

選択項目を削除します.

3−9−2 全項目を削除

全項目を削除します.

3−9−3 重複項目を削除

アドレスとポートが重複する項目を削除します.

3−10 Reset.gif リセット

3−10−1 選択項目の検査をリセット

選択項目を検査前の状態にリセットします.

3−10−2 全項目の検査をリセット

全項目を検査前の状態にリセットします.

3−10−3 選択項目の診断をリセット

選択項目を診断前の状態にリセットします.

3−10−4 全項目の診断をリセット

全項目を診断前の状態にリセットします.

3−10−5 検索強調をリセット

検索強調表示された項目を通常表示にリセットします.

3−11 Select.gif 選択

3−11−1 全項目を選択

全項目を選択します.

3−11−2 選択を解除

全項目を選択解除します.

3−11−3 選択を反転

項目の選択状態を反転します.

3−11−4 CheckProxy.gif 検査項目を選択

検査に成功した項目を選択して,リスト最上部に浮き上がらせます.

ステータスバーのCheckProxy.gifをクリックしても同じ動作をします.

3−11−5 DiagProxy.png 診断項目を選択

診断に成功した項目を選択して,リスト最上部に浮き上がらせます.

ステータスバーのDiagProxy.pngをクリックしても同じ動作をします.

3−11−6 ItemBad.png 失敗項目を選択

検査に失敗した項目を選択して,リスト最上部に浮き上がらせます.

ステータスバーのItemBad.pngをクリックしても同じ動作をします.

3−11−7 ItemWait.png 待機項目を選択

検査前の項目を選択して,リスト最上部に浮き上がらせます.

ステータスバーのItemWait.pngをクリックしても同じ動作をします.

3−11−8 Raise.png 選択項目を浮上

選択項目をリスト最上部に浮き上がらせます.

3−12 Copy.png コピー

3−12−1 アドレス&ポートをコピー

選択項目のアドレスとポートをコロン":"で連結して,クリップボードにコピーします.

3−12−2 アドレスをコピー

選択項目のアドレスをクリップボードにコピーします.

3−12−3 ポートをコピー

選択項目のポートをクリップボードにコピーします.

3−12−4 全カラムをコピー

選択項目の全カラムをクリップボードにコピーします.

3−13 Paste.gif ペースト

クリップボードからProxyをリスト末尾に追加登録します.

クリップボードテキスト内の

xxx.xxx.xxx.xxx:xxxx

という書式文字列だけを抽出して登録します.

3−14 Save.gif 保存

リストの内容を保存します.

書式 説明
LST形式 CCBが取り扱うすべての内容を独自書式で保存
テキスト形式 "アドレス&ポート"をテキストファイルとして保存
PAC形式 A(注) Proxy自動設定ファイル(PAC)を保存
リストの一番上のProxyのみを使用する
PAC形式 B(注) Proxy自動設定ファイル(PAC)を保存
ページごとにProxyをランダムに使用する
注意
IE系&Mozilla系ブラウザに対応しています.詳しい使い方は,こちらなどを参考にしてください.
3−14−1 全項目を保存

全項目を保存します.

3−14−2 選択項目を保存

選択項目を保存します.

3−14−3 CheckProxy.gif 検査項目を保存

検査に成功した項目を保存します.

3−14−4 DiagProxy.png 診断項目を保存

診断に成功した項目を保存します.

3−14−5 ItemBad.png 失敗項目を保存

検査に失敗した項目を保存します.

3−14−6 ItemWait.png 待機項目を保存

検査前の項目を保存します.

3−15 Load.gif 読込

Proxyファイルをリストに読み込みます.

"LST形式"もしくは"テキスト形式"の書式ファイルを自動判別して読み込むことができます.

3−15−1 読み込む(上書き)

リストの全項目を削除してからファイルを読み込みます.

ファイルをリストにドラッグ&ドロップしても同じ動作をします.

3−15−1 読み込む(追加)

リストの末尾に追加する形でファイルを読み込みます.

コントロールキーを押しながらファイルをリストにドラッグ&ドロップしても同じ動作をします.

3−16 Options.gif オプション設定

オプション設定ダイアログを開きます.

3−17 採集先

Proxyリストを採集するウェブサイトを選択します.

採集先の編集は"オプション設定|採集"で行います.

3−17−1 ブラウザ表示

採集先ラベル(青字)をクリックすると,採集サイトをウェブブラウザに表示します.

3−18 検索

全項目の各カラムごとのパターンマッチや大小比較を組み合わせた検索を行うことができます.

キー入力 動作
{検索テキスト}+エンター 検索開始
シフト+エンター 選択している検索テキストを削除

検索に成功すると,該当項目を強調表示&リスト最上部に浮き上がらせます.

さらに,その検索テキストをコンボボックスに履歴として記録します.

3−18−1 検索テキスト
入力書式
 {検索論理式} {what句}
検索論理式
 {マッチ式} and {比較式}
 {マッチ式1} or {マッチ式2}
 {マッチ式}
 {比較式}

検索論理式とは,文字列のマッチ式や比較式を論理演算子(and,or,not,&&,||,!)で結合した式です.もちろん,マッチ式や比較式を単独で記述することも可能です.論理式をまとめるために,括弧を使うことはできません.ブール代数の規則に従い,括弧を展開したり,式順を変更して記述してください.

マッチ式

マッチ式とは文字列のパターンマッチングを評価する式です.

マッチ式には,全カラムをまとめて評価する方法と,個別カラムを指定して評価する方法の2種類の書き方があります.

全カラムの場合
 {検索パターン}
個別カラムの場合
 {カラム名}//{検索パターン}
{カラム名}
アドレス
ポート
応答
サイズ
種別
国籍
取得
結果
採集先
ターゲット
診断

個別カラムのマッチ式は以下のような書き方もできます.

 {名称1} {名称2} {名称3}//{検索パターン}

これは以下の検索論理式と同じ意味をなします.

 {名称1}//{検索パターン} or {名称2}//{検索パターン} or {名称3}//{検索パターン}
検索パターン

検索パターンとは通常表現もしくは正規表現の検索文字列(オプション含む)の総称です.

 {検索オプション} {キーワード}

{検索オプション}は必ず{キーワード}の前に記述します.

{検索オプション}と{キーワード}の間に一つ以上のスペースを挿入します.

{検索オプション}を省略すると"暗黙の検索オプション"が補います.

検索オプション
 @{記号1}{記号2}...

{検索オプション}は"@"の後に下記の{記号}を組み合わせて記述します.

{記号}の記述順や大小文字の違いを気にする必要はありません.

ただし,{記号}と{記号}の間にスペースや文字を挿入すると正しく認識できません.

{記号} 説明
r 正規表現でキーワードを記述する
n 通常表現でキーワードを記述する(デフォルト値)
i 英文大小文字を区別しない(両表現で使用可)
s 改行も一般文字とみなす(正規表現のみ使用可)
m 各行で^と$を認識する(正規表現のみ使用可)
b 末尾から検索を実行する(正規表現のみ使用可)
キーワード
  • 前後のスペースはトリミングしますが,複数の単語から構成される文字列ならば,間のスペースも含めてひとつのキーワードと見なします.
  • 通常表現の場合,キーワード中のアスタリスク"*"文字はワイルドカードとして作用します.正規表現の場合は0回以上の繰り返しを表すメタ文字として作用します.
  • キーワードが単語の一部分ではなく単語そのものであることを明示したいならば,通常表現の場合は"ダブルクォーテーション"で,正規表現の場合は"\b"で囲んで記述します.
  • キーワードの中に論理演算子(and,or,not,&&,||,!)と関係詞(what)を使いたい場合は,それらの前に"\"を付けてエスケープしてください.
比較式

比較式とは文字列あるいは数値の大小関係や日時の新旧関係を評価する式です.

 {カラム名} {演算子} {値}
{演算子} 説明
= {カラム}が{値}と等しければ真
> {カラム}が{値}より大きければ真
< {カラム}が{値}より小さければ真
>= {カラム}が{値}以上ならば真
<= {カラム}が{値}以下ならば真

{値}の中に論理演算子や関係詞と同じ文字列を使いたい場合は,それらの前に"\"を付けてエスケープしてください.

{カラム名}はマッチ式と同じですが,以下の表に示すようにカラムによって比較のやり方が異なります.

{カラム名} 説明
アドレス,国籍,結果,採集先,ターゲット,診断 文字列として比較
ポート,応答,サイズ 数値として比較
種別 定義順で比較
取得 日時として比較
what句
 what {実行状態}

what句は検索すべき実行状態を設定します.

what句を省略した場合は全項目を検索します.複数の実行状態を設定したい場合は,what句をそれぞれ記述することもできますが,後述するようにひとつのwhat句にまとめて記述する方が簡便です.

what句は文節構造上の制約から検索論理式の後に記述してください.

{実行状態} 説明
検査項目 検査に成功した項目
診断項目 診断に成功した項目
失敗項目 検査に失敗し項目
待機項目 検査前の項目

what句の{実行状態}入力は実を言うと正規表現のパターンになっています.故に,他と区別がつく範囲でパターンマッチ可能ならば省略表記することができます.さらに以下のようにまとめて設定することもできます.

 what 検査|失敗
3−18−2 例
全項目に対して,全カラムのどれかに"china"もしくは"japan"という文字列を含む項目
china or japan

"暗黙の検索オプション"に"i"がセットされているならば,英大小文字を区別しません.

全項目に対して,全カラムのどれかに"connectfailure\(\d+\)"という正規表現パターンを含む項目
@ri connectfailure\(\d+\)
診断成功した項目に対して,国籍に"china"という文字列を含み,かつ応答時間が1秒以下の項目
国籍//china and 応答<1 what 診断

"暗黙の検索オプション"に"i"がセットされているならば,国籍のマッチ式は英大小文字を区別しません.

全項目に対して,国籍に"russia|china"という正規表現パターンを含まず,かつ採集先に"cyber (speed|anonymous)"という正規表現パターンを含み,かつターゲットに"bing"という文字列(英大小文字を区別)を含む項目
not 国籍//@ri russia|china and 採集先//cyber (speed|anonymous) and ターゲット//@n bing

検索オプションの継承のサンプルです.

途中のマッチ式で検索オプションを省略すると,直前のマッチ式のオプションを継承します.継承は新たにオプションを記述するまで続きます.上記の例の場合,採集先の"cyber (speed|anonymous)"は国籍の"russia|china"のオプション"ri"を継承します.しかし,ターゲットの"bing"は新たなオプション"n"に置き換わります.

ところで,国籍のオプション"ri"も省略された場合はどうなるでしょう?その場合は,"暗黙の検索オプション"を引用します.そして,この継承はターゲットのオプション"n"が出現するまで続きます.

4 オプション設定

4−1 採集

採集先を編集します.

4−1−1 新規

採集先を新規作成します.

4−1−2 複製

選択した採集先の複製を作成します.

4−1−3 削除

選択した採集先を削除します.

4−1−4 ▲・▼

選択した採集先を上下に移動します.

4−1−5 インポート

エクスポートファイルから採集先をインポートします.

モード 説明
上書き 登録済みの採集先をすべて削除して新規登録
追加 登録済みの採集先の末尾に追加登録
マージ 同じアドレスならば差し替えて,それ以外は末尾に追加登録
4−1−6 エクスポート

採集先をエクスポートします.

モード 説明
有効サイトのみ チェックボックスが有効な項目のみ出力
全サイト すべての項目を出力
注意
雛型の正規表現に誤りがある項目は除外します.
4−1−7 名称

採集先の名称を設定します.

4−1−8 URL

採集先のアドレスを設定します.

アドレスは以下の書式を目的に応じて使い分けることができます.

単独形式

アドレスを単独で定義します.

http://www.cybersyndrome.net/plr.html
連番形式

アドレスを連番でまとめて定義します.

ダウンローダ(Irvineなど)の連番URL書式とほぼ同じです.

http://www.getproxy.jp/default/[1-5]

終了ページ番号が不定の場合は値を省略します.

http://proxyhttp.net/free-list/anonymous-server-hide-ip-address/[1-]
羅列形式

単独形式や連番形式をまとめて定義します.

http://www.cybersyndrome.net/pld.html;http://www.cybersyndrome.net/pla.html

セミコロン";"で連結して記述します.

参照形式

起点となる{参照URL}から動的に変化するアドレスをサンプリングします.

書式)?{参照URL};{正規表現}
?http://www.proxycemetery.com/;index\.htm\?page=\d+
  • サンプリングパターンは{正規表現}で定義します.
  • {正規表現}には検索オプションを付加することができます.
    • オプションを省略した場合は"@ri"を暗黙に設定していると見なします.
  • {正規表現}を相対URL表記すると,{参照URL}を使って絶対URLに変換します.

{参照URL}も採集先に含む場合は先頭を"?!"と記述します.

書式)?!{参照URL};{正規表現}
?!http://www.proxz.com/proxy_list_high_anonymous_0.html;proxy_list_high_anonymous_\d+\.html
4−1−9 雛型

採集先のHTMLテキストからProxyを読み込むための雛型を定義します.

雛型には以下の3種類があり,定義が重複した場合は優先度の高い雛型の方を優先します.

雛型 優先度
個別  上
共通  中
定数  下
個別

Proxyごとに定義されたパラメータを読み込むための雛型です.

雛型は"名前付きグループによる正規表現"を使って記述します.

グループ名 説明
アドポ アドレス&ポート
アドレス アドレス
ポート ポート
アドポU URLエンコードされたアドレス&ポート
アドレスU URLエンコードされたアドレス
ポートU URLエンコードされたポート
種別 種別
国籍 国籍の正式名
国略 国籍の略称
取得 取得日時

更に,検索オプションを付加することができます.

オプションを省略すると"@ri"を暗黙に設定していると見なします.

free proxy list
<tr><td>(?<アドレス>.+?)</td><td>(?<ポート>.+?)</td><td>.*?</td><td.*?>(?<国籍>.*?)</td><td>(?<種別>.*?)</td><td.*?>.*?</td><td.*?>.*?</td><td.*?>(?<取得>.+?)</td>
雛型を省略すると

Proxyが平文で並んでいると判断し,以下の"暗黙の雛型"を使って読み込みます.

(?<アドレス>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(?<ポート>\d+)
共通

採集先のHTMLテキスト1ページの中で共通なパラメータを読み込むための雛型です.

定義方法は個別の時と同じです.

CyberSyndrome
Updated: (?<取得>.+?) JST
MY-PROXY
@ris <h1>(?<種別>.+?)<br>.+?<b>Last update on (?<取得>.+?)</b>
定数

個別にも共通にも定義のないパラメータに定数値を設定します.

書式){グループ名1}={値1};{グループ名2}={値2}

複数のパラメータを定義したい場合は,上記のようにセミコロン";"で連結します.

種別=A;国籍=Zimbabwe
4−1−10 日時

グループ名"取得"で読み込んだ日時は,採集先ごとにバラバラな表記です.

それらをCCBに理解させるために書式を定義します.

書式定義 説明
yyyy-MM-ddなど カスタムの日付と時刻の書式指定文字列
unix UNIX時間
ago=正規表現 更新日時から現在までの経過時間
正規表現の中で名称がh,m,sのグループが時,分,秒の値を示す
(省略) "取得"の内容から自動的に判断(大概失敗する!)
4−1−11 時差

グループ名"取得"で読み込んだ日時の時差補正を行います.

4−1−12 プラグイン

個別雛型による読み込みを補助をするプラグインモジュールを選択します.

4−1−13 チェックボックス

リスト横のチェックボックスが,有効な項目のみ採集先に登録します.

4−2 種別

採集先ごとにバラバラな表記のProxyの種別を統一します.

この設定は次回の採集から反映します.

4−2−1 新規

種別を新規作成します.

4−2−2 複製

選択した種別の複製を作成します.

4−2−3 削除

選択した種別を削除します.

4−2−4 ▲・▼

選択した種別を上下に移動します.

4−2−5 名称

種別の名称を設定します.

4−2−6 雛型

この種別に統一するさまざまな表記の雛型を定義します.

雛型は"正規表現"を使って記述します.

更に,検索オプションを付加することができます.

オプションを省略すると"@ri"を暗黙に設定していると見なします.

種別名"S"の場合
\b(s|high|elite)\b
例外

どの雛型にも一致しない場合は,強制的に最後尾の種別に割り当てます.

そのため,最後尾の種別は以下の如く定義しておくと良いでしょう.

名称 雛型
不明                
4−2−7 配色

この種別に属する項目の文字色を設定します.

4−3 検査

検査に関する設定を行います.

4−3−1 ターゲットのURL

検査のためにProxy経由で試験接続を行うターゲットのURLを設定します.

検査の試験接続は同時にたくさん行うので,なるべく多くのターゲットをここで設定しておいて,それぞれへの負荷を分散してやると良いでしょう.

また,それぞれのサイズや応答性能が似たサイトを選んでおけば,検査結果の偏りを少なくできるかもしれません.あくまでも,希望的観測に過ぎませんが.

4−3−2 サイズ計測できなかったターゲットを自動的に削除する

検査前にサイズ計測をするために,それぞれのターゲットに直接接続を試みます.

このスイッチがオンならば,サイズ計測できなかったターゲットを自動的に削除します.

4−3−3 除外フィルタ

検査から除外するフィルタを設定します.

フィルタは検索テキストと同じ書式で記述します.

種別がSocksの項目を除外する
種別//socks

"暗黙の検索オプション"に"i"がセットされているならば,英大小文字を区別しません.

4−4 診断

診断に関する設定を行います.

4−4−1 URL

診断CGIのURLを設定します.

4−4−2 雛型

診断CGIの出力から必要な部分だけ取得する雛型を定義します.

雛型は"名前付きグループによる正規表現"を使って記述します.

グループ名 説明
クリップ 切り取る領域

更に,検索オプションを付加することができます.

オプションを省略すると"@ris"を暗黙に設定していると見なします.

診断くん
総合評価:(?<クリップ>.+?)<br>
4−4−3 文字

診断CGIのエンコードを明示的に設定します.

わからない場合は空欄にしておくと自動的に決定します.

4−5 照会

照会に関する設定を行います.

4−5−1 WhoisサーバのURL

WhoisサーバのURL(複数可)を設定します.

  • 複数のURLを設定する場合は改行区切りで記述します.
  • WhoisサーバにProxyアドレスを渡すには環境変数"%u"を使います.
http://whois.ansi.co.jp/%u
http://whois.domaintools.com/%u
http://ip-address-lookup-v4.com/ip/%u

4−6 ソケット

採集検査診断コマンドの接続ソケットに関する設定を行います.

特にコマンド別パラメータと断りのない限り,すべてのコマンドに共通の値を利用します.

4−6−1 リファラ

リファラを設定します.

プリセットされた選択肢を使うこともできますし,直接アドレスを記入して設定することも可能です.

4−6−2 U.A.

ユーザーエージェントを設定します.

あたりさわりのないブラウザ名を記入しておけば問題ないでしょう.

4−6−3 その他のリクエストヘッダ

"リファラ""ユーザーエージェント"以外のリクエストヘッダをセットします.

キーと値をコロン":"で連結して記述します.

CCBでは以下の項目が暗黙に設定済ですが,同名項目を定義すると上書きします.

Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:ja,en
4−6−4 自動転送を許可する

HTTP接続のAutoRedirectパラメータを設定します.

注意
ターゲットが消失(404エラー)している場合や,特定クライアント(ブラウザ・ユーザーエージェント)をリジェクトする場合に,別ページに転送される事があります.このような転送をいちいちトレースしても,ソケットを無駄に占有されるだけで,まったく意味がありません.そこで,通常はこのスイッチをオフにしておき,転送を拒絶して接続を断ちます.
4−6−5 接続を維持する

HTTP接続のKeepAliveパラメータを設定します.

4−6−6 コマンド別パラメータ
同時接続数

同時に接続を行うソケット数を設定します.

注意
上限はありませんが,あまり沢山の接続を行うと,ターゲットに大きな負荷を与えることになり,クライアントではスレッド時間の取り合いになり正確な応答時間が計測できなくなる可能性があります.ほどほどの値を設定してください.
タイムアウト

接続を諦めるまでの時間を設定します.

最大試行回数

接続を試みる最大回数を設定します.

4−6−7 同じ採集先に対しても同時接続を許可する

このスイッチがオンの場合は,同じ採集先ならば複数同時接続を許可します.

オフの場合は,同じ採集先はひとつずつアクセスします.

ただし,採集先のURL書式が連番形式で終了ページ番号が不確定な場合は,スイッチのオンオフに関わりなくひとつずつアクセスします.

4−7 その他

4−7−1 採集パラメータ
採集結果を追加登録する

このスイッチがオンの場合は,リストの内容は消去せずに採集結果を追加登録します.

採集後に重複項目を削除する

このスイッチがオンの場合は,採集後にアドレスとポートが重複する項目を削除します.

採集後に全項目をシャッフルする

このスイッチがオンの場合は,採集後に全項目の並び順をシャッフルします.

取得日時の有効期限

項目の取得日時と現在日時の差が,設定した日数以内の場合のみ登録します.

設定値が"0"の場合は無制限に登録できます.

4−7−2 検索パラメータ
暗黙の検索オプション

検索テキスト検索パターン検索オプションを省略した場合に,暗黙のオプションとして働く値を設定します.

もちろん,何も設定しないことも可能です.

5 プラグイン

プラグイン採集時の雛型解析を補助するプログラムモジュールです.

例えば,"アドレス""ポート"をそのまま記述せずに,暗号化したり表示シークエンスを入れ替えたりしているような採集先に対して,暗号を復号したり正しいシークエンスに並べ直してやる処理を請け負います.

プラグインとCCB本体とのデータのやり取りは,雛型グループ名を拡張することで行います.

本パッケージの配布時に登録してある採集先には同梱したプラグインを使うことができます.しかし,ユーザーが新規登録した採集先には,ご自分でプラグインを自作する必要があるかもしれません.そのような場合でも,CCBのプラグインは.NET開発環境さえあれば,非常に簡単に開発することができます.

5−1 同梱プラグイン

同梱プラグインの使い方を説明します.

5−1−1 CyberPunkt

JavaScriptの配列に収納されたアドレスとポート番号を取得します.

拡張グループ名 説明
CYBER_IDX 配列指数

拡張グループ名を使った雛型は以下のように記述します.

<td>\d+</td><td id="n(?<CYBER_IDX>\d+)"></td><td>.*?</td><td class=".">(?<種別>\w+?)</td><td>(?<国籍略号>\w+?)</td>
5−1−2 ProxyhttpPort

JavaScriptで定義された代数式からポート番号を計算します.

拡張グループ名 説明
PH_PORT 代数式

拡張グループ名を使った雛型は以下のように記述します.

<td class="t_ip">(?<アドレス>.+?)</td>\s+<td class="t_port">\s+<script type="text/javascript">\s+//<!\[CDATA\[\s+document\.write\((?<PH_PORT>.+?)\);\s+//\]\]>\s+</script>\s+</td>\s+<td class="t_country"><img.+?>(?<国籍>.+?)</td>\s+<td class="t_anonymity">\s+(?<種別>.+?)\s+</td>

5−2 自作プラグイン

自作プラグインの開発方法について,"ProxyhttpPort"を題材に解説します.

5−2−1 インターフェース (PluginInterface.dll)

プラグインはこのインターフェースを継承して作成するので,PluginInterface.dllを「参照に追加」しておくことを忘れないようにしましょう.

using System;
using System.Collections.Generic;

namespace PluginInterface
{
  public interface IPlugin
  {
    string Preload(string html);
    void Reconstruct(string[] p, Dictionary<string,string> d);
  }
}
Preload
引数 説明
html 採集先のHTMLテキスト
返り値
事前処理を行ったHTMLテキスト

採集操作を行う前にHTMLテキストに処理を施します.

Reconstruct
引数 説明
p パラメータ配列
d 拡張グループ名と値の辞書
配列要素 説明
p[0] アドレス
p[1] ポート
p[2] 応答時間
p[3] ターゲットサイズ
p[4] 種別
p[5] 国籍
p[6] 取得日時
p[7] 結果
p[8] 採集先
p[9] ターゲット
p[10] 診断

辞書の値を使って計算した結果をパラメータ配列pに保存します.

5−2−2 プラグイン本体 (ProxyhttpPort.cs)

このプラグインをビルドするにはCOMライブラリから"Microsoft Script Control"を参照に追加しておく必要があります.

using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Text;

namespace ProxyhttpPort
{
  /// <summary>
  /// Proxyhttp.netを復号する
  /// </summary>
  public class ProxyhttpPort : PluginInterface.IPlugin
  {
    /// <summary>
    /// 変数
    /// </summary>
    private MSScriptControl.ScriptControl msc;

    /// <summary>
    /// コンストラクタ
    /// </summary>
    public ProxyhttpPort()
    {
      // ScriptControlオブジェクト作成
      msc = new MSScriptControl.ScriptControl();
      // 言語設定
      msc.Language = "JavaScript";
    }

    /// <summary>
    /// デストラクタ
    /// </summary>
    ~ProxyhttpPort()
    {
      // ScriptControlオブジェクトの開放
      System.Runtime.InteropServices.Marshal.ReleaseComObject(msc);
    }

    /// <summary>
    /// 事前処理
    /// </summary>
    /// <param name="html">HTMLテキスト</param>
    /// <returns>HTMLテキスト</returns>
    public string Preload(string html)
    {
      // 変数宣言を取得
      Match m = Regex.Match(html, @"//<!\[CDATA\[\s+(.+?)\s+//\]\]>");
      if (m.Success) msc.AddCode(m.Groups[1].Value);
      // HTMLテキストは整形の必要なし
      return html;
    }

    /// <summary>
    /// 再構成
    /// </summary>
    /// <param name="p">パラメータ配列</param>
    /// <param name="d">ユーザー識別子&値の辞書</param>
    public void Reconstruct(string[] p,Dictionary<string,string> d)
    {
      try
      {
        string s;
        if (d.TryGetValue("PH_PORT",out s))
        {
          // PH_PORTの式の評価
          object o = msc.Eval(s); //.NET 4のdynamic型をスポイルする
          p[1] = o.ToString();
        }
      }
      catch
      {
      }
    }
  }
}
動作原理

Proxyhttp.netの採集ページ(HTML)を眺めると,変数をいくつも宣言しているだけの怪しげなJavaScriptコードのブロックが存在します.そして,各Proxyのポート番号は,この変数を使った代数式から導出するカラクリです.

そこで,Preloadメソッドでは変数宣言を見つけて,ScriptControlにまるごと読み込んでおきます.

次に,Reconstructメソッドではd["PH_PORT"]に先ほどの変数を使った代数式が格納されているので,ScriptControlで式を評価(計算)して,その結果をp[1]に返します.

5−2−3 プラグインの登録 (ProxyhttpPort.dll)

作成したプラグイン(ProxyhttpPort.dll)を

{CCB}\plugins\

に配置すれば登録完了です.

これで,次回起動時から,"オプション設定|採集|プラグイン"にて選択可能になります.