ホームページ > 記事 > ウェブフロントエンド > Node.js は torrent files_node.js から邪悪な情報を削除します
2012年、「ABS-130」という日本映画がネット上に衝撃を与え、「最初は犬に見えたけど、今はブスだと思う」という現象がネット上に現れ、ネットトレンドになった。 2012年の大きな出来事。
2014 年、ネットワーク浄化作戦が本格化し、しばらくの間、すべての大手インターネット企業が模範を示し、すべての悪の種を締め出しました。ネットクリーンアップ作戦万歳! ! (返してください、カン先生!!)
主要なネットワーク ディスクとダウンロード アプリケーションは、シードから重要な情報を抽出して除外します。この重要な情報は一体どこに隠されているのでしょうか?調べてみましょう。
Torrent ファイル構造
以下の内容はウィキペディアからのものです
.torrent シード ファイルは本質的にはテキスト ファイルであり、トラッカー情報とファイル情報が含まれています。トラッカー情報は主に、BT ダウンロードに必要なトラッカー サーバーのアドレスとトラッカー サーバーの設定です。ファイル情報は対象ファイルの計算に基づいて生成され、計算結果は Bencode のルールに従ってエンコードされます。 BitTorrent プロトコル。その主な原理は、ダウンロード用に提供されるファイルを同じサイズのブロックに仮想的に分割することです。ブロック サイズは 2k の整数乗である必要があり (仮想ブロックのため、個々のブロック ファイルはハード ディスク上に生成されません)、各ブロックは次のようになります。インデックス情報とハッシュ検証コードはシード ファイルに書き込まれるため、シード ファイルはダウンロードされたファイルの「インデックス」になります。
上の図は典型的なシードの構造です。特定された悪のキーワードは名前とファイルに隠されています。 name には、abcd-123 sexy XXXX などの torrent の名前が含まれます。ファイル内のパスには、CaoX Community.txt の最新アドレス など、ダウンロードするすべてのファイルの情報が含まれます。
Node.js と parse-torrent ライブラリ
Torrent 内の邪悪な情報を見つけるために、Node.js ライブラリと parse-torrent ライブラリにアシスタントとして協力してもらいました。
実験の準備:
1 つのコンピューターに Node.js をインストールするための 1 つのシード
まず、npm を使用して parse-torrent ライブラリをインストールします。これは、torrent 内の情報をすばやく見つけるのに役立ちます。
<code>npm install parse-torrent</code>
var fs = require("fs"); var parseTorrent = require('parse-torrent'); var info = parseTorrent(fs.readFileSync('my.torrent')); console.log(info);
このライブラリはシード情報を解析し、オブジェクトの形式で返します。
結果の表示:
名前:
ファイル:
parse-torrentライブラリで解析された名前とファイル情報がバッファ形式で保存されていることがわかります。
種子の洗浄
シード内の邪悪な情報を削除し、クレードル内の邪悪なシードを絞める方法 最も重要なことは、名前とファイル内のパスの情報をクリアすることです。
function cleanInfo (info) { // 将种子名用 md5 加密 info.name = md5(info.name); info['name.utf-8'] = md5(info['name.utf-8']); var files = info.files; for (var i = 0; i < files.length; i++) { var file = files[i]; for (var key in file) { if (key == "path" || key == "path.utf-8") { for (var j = 0; j < file[key].length; j++) { var text = file[key][j].toString(); var dotIndex = text.lastIndexOf("."); // 将种子名用 md5 加密 file[key][j] = md5(text.slice(0,dotIndex)) + text.slice(dotIndex,text.length); } } } } return info; }
// 将清洗干净后的 info 对象重新生成一个 torrent 文件 var buf = parseTorrent.toTorrentFile({ info: cleanInfos[i] }); fs.writeFile(dir + "/" + cleanInfos[i].name + ".torrent", buf);
これを実行すると、邪悪な torrent ファイルは次のようになります:
実践段階
まず、XX クラウドのオフライン ダウンロード用のシードを準備します。
最初は拒否されました。
次に、スクリプトを実行してクリーンアップします。
<code>node cleanTorrent IPTD-XXX.torrent</code>
ダウンロードが成功しました!
スクリプトのソース コードはここにあります。ダウンロード コンテンツを見てください。 ! !
(服を脱いでこれを見せてください!!!)
ついに
この記事は純粋に技術的な議論です。読んでいただきありがとうございます。欠点があればご指摘ください。
この記事を友達と共有したり、コメントを残してください。皆様のご支援に心より感謝申し上げます。