欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js 去掉種子(torrent)文件里的邪惡信息

 更新時間:2015年03月27日 08:56:43   投稿:hebedich  
torrent文件,又被稱為種子,原來只是用于記錄 bt下載當(dāng)中所需信息的一種文件。但是隨著互聯(lián)網(wǎng)的極大發(fā)展,一些人士將一些邪惡的信息注入到了小小的 torrent文件當(dāng)中,種子從此變成了邪惡的代名詞。

2012 年,一部名為 ABS-130 的日本影片引起了網(wǎng)絡(luò)的震動,網(wǎng)絡(luò)上紛紛出現(xiàn)了 “當(dāng)初求種像條狗,如今*完嫌人丑”的現(xiàn)象,成為了 2012 年互聯(lián)網(wǎng)的一件大事件。

2014年,凈網(wǎng)行動如火如荼地進行,各大互聯(lián)網(wǎng)公司都作出了表率,一時之間XX云、X雷都把萬惡的種子拒之門外。凈網(wǎng)行動萬歲?。。ㄟ€我蒼老師?。。?/p>

各大網(wǎng)盤、下載應(yīng)用都從種子當(dāng)中提取關(guān)鍵信息,將種子拒之門外。這些關(guān)鍵信息究竟藏在哪里?讓我們一探究竟。

種子文件結(jié)構(gòu)

以下內(nèi)容來自維基百科

.torrent種子文件本質(zhì)上是文本文件,包含Tracker信息和文件信息兩部分。Tracker信息主要是BT下載中需要用到的Tracker服務(wù)器的地址和針對Tracker服務(wù)器的設(shè)置,文件信息是根據(jù)對目標(biāo)文件的計算生成的,計算結(jié)果根據(jù)BitTorrent協(xié)議內(nèi)的Bencode規(guī)則進行編碼。它的主要原理是需要把提供下載的文件虛擬分成大小相等的塊,塊大小必須為2k的整數(shù)次方(由于是虛擬分塊,硬盤上并不產(chǎn)生各個塊文件),并把每個塊的索引信息和Hash驗證碼寫入種子文件中;所以,種子文件就是被下載文件的“索引”。

上圖是一個典型種子的結(jié)構(gòu),那些被識別出來的邪惡關(guān)鍵字就藏在 name 和 file 當(dāng)中。name 包含了該種子的名字,如:abcd-123 性感XXXX。而 file 當(dāng)中的 path 則包含了要下載的所有文件的信息,如:草X社區(qū)最新地址.txt等等。

Node.js 和 parse-torrent 庫

為了尋找出種子當(dāng)中的邪惡信息我們請出了 Node.js 和 parse-torrent庫 作為助手。

實驗準(zhǔn)備:

種子一枚安裝 Node.js 電腦一臺

首先我們利用 npm 安裝 parse-torrent 庫,它幫助我們快速找到種子內(nèi)的信息。

npm install parse-torrent
var fs = require("fs");
var parseTorrent = require('parse-torrent');

var info = parseTorrent(fs.readFileSync('my.torrent'));
console.log(info);

這個庫會將種子的信息解析出來,以對象的形式返回給我們。

查看結(jié)果:

name:

files:

可以看到用 parse-torrent 庫解析出來的 name 和 files 的信息都是以 Buffer 形式存儲。

清洗種子

如何將種子里的邪惡信息清洗掉,把萬惡的種子扼殺在搖籃之中,最重要的就算要清除調(diào) name 和 files 里面 path 的信息。

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);

經(jīng)過這樣之后,我們的邪惡種子文件就變成這樣了:

實戰(zhàn)階段

首先準(zhǔn)備一個種子,進行XX云的離線下載。

一開始它是被拒絕的。

然后運行腳本進行清洗。

node cleanTorrent IPTD-XXX.torrent

下載成功了!

腳本源碼放在這里了,要去看一下我的下載內(nèi)容了?。。?/p>

(**都脫了你給我看這個?。。。?/p>

最后

本文純屬技術(shù)討論,感謝你的閱讀,有不足之處請為我指出。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!

相關(guān)文章

  • 使用Puppeteer實現(xiàn)頁面遍歷的示例代碼

    使用Puppeteer實現(xiàn)頁面遍歷的示例代碼

    很多時候我們需要遍歷我們的頁面來檢查頁面是否存在問題,以更好的保證可用性和安全性,下面就來講講如何使用puppeteer來實現(xiàn)頁面遍歷的功能吧
    2023-06-06
  • 基于nodejs+express(4.x+)實現(xiàn)文件上傳功能

    基于nodejs+express(4.x+)實現(xiàn)文件上傳功能

    通過一段時間的查閱資料發(fā)現(xiàn)實現(xiàn)上傳的方式有:1.express中間件multer模塊2.connect-multiparty模塊(但現(xiàn)在 官方不推薦 )3.使用multiparty模塊實現(xiàn)4.使用formidable插件實現(xiàn),本文給大家介紹nodejs+express(4.x+)實現(xiàn)文件上傳功能,需要的朋友參考下
    2015-11-11
  • Node.js事件驅(qū)動

    Node.js事件驅(qū)動

    Node.Js是基于javascript語言,建構(gòu)在google V8 engine以及Linux上的一個非阻塞事件驅(qū)動IO框架。這里主要不是介紹nodejs具體應(yīng)用代碼,而是想介紹一下事件驅(qū)動編程。
    2015-06-06
  • node.js 動態(tài)執(zhí)行腳本

    node.js 動態(tài)執(zhí)行腳本

    其中的Script對象,就與require('vm')返回的對象很相似,而實質(zhì)上,vm模塊就是對Script對象的封裝。
    2016-06-06
  • 三分鐘教你用Node做一個微信哄女友(基友)神器(面向小白)

    三分鐘教你用Node做一個微信哄女友(基友)神器(面向小白)

    這篇文章主要介紹了三步教你用Node做一個微信哄女友(基友)神器(面向小白),用node和wechaty微信網(wǎng)頁接口開發(fā)的一款小工具,可以定時給女朋友發(fā)每天的天氣情況,天氣提醒,每日一句。通過配置機器人api后還可以實現(xiàn)微信機器人自動陪女朋友聊天。,需要的朋友可以參考下
    2019-06-06
  • Node.js中path模塊操作路徑的基本使用

    Node.js中path模塊操作路徑的基本使用

    這篇文章主要介紹了Node.js中path模塊操作路徑的基本使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Node.js系列之發(fā)起get/post請求(2)

    Node.js系列之發(fā)起get/post請求(2)

    這篇文章主要為大家詳細(xì)介紹了Node.js系列之發(fā)起get/post請求,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 詳解如何使用Node.js連接數(shù)據(jù)庫ORM

    詳解如何使用Node.js連接數(shù)據(jù)庫ORM

    這篇文章主要為大家介紹了詳解如何使用Node.js連接數(shù)據(jù)庫ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 如何利用node.js開發(fā)一個生成逐幀動畫的小工具

    如何利用node.js開發(fā)一個生成逐幀動畫的小工具

    這篇文章主要給大家介紹了關(guān)于如何利用node.js開發(fā)一個生成逐幀動畫小工具的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • nodejs連接mysql數(shù)據(jù)庫及基本知識點詳解

    nodejs連接mysql數(shù)據(jù)庫及基本知識點詳解

    這篇文章主要介紹了nodejs連接mysql數(shù)據(jù)庫,結(jié)合實例形式總結(jié)分析了nodejs連接與操作mysql數(shù)據(jù)庫的相關(guān)模板、配置及mysql數(shù)據(jù)庫查詢、添加數(shù)據(jù)等操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論