最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

Node.js 和 parse-torrent 庫(kù)

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

實(shí)驗(yàn)準(zhǔn)備:

種子一枚安裝 Node.js 電腦一臺(tái)

首先我們利用 npm 安裝 parse-torrent 庫(kù),它幫助我們快速找到種子內(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);

這個(gè)庫(kù)會(huì)將種子的信息解析出來(lái),以對(duì)象的形式返回給我們。

查看結(jié)果:

name:

files:

可以看到用 parse-torrent 庫(kù)解析出來(lái)的 name 和 files 的信息都是以 Buffer 形式存儲(chǔ)。

清洗種子

如何將種子里的邪惡信息清洗掉,把萬(wàn)惡的種子扼殺在搖籃之中,最重要的就算要清除調(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 對(duì)象重新生成一個(gè) torrent 文件
var buf = parseTorrent.toTorrentFile({
 info: cleanInfos[i]
});
fs.writeFile(dir + "/" + cleanInfos[i].name + ".torrent", buf);

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

實(shí)戰(zhàn)階段

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

一開始它是被拒絕的。

然后運(yùn)行腳本進(jìn)行清洗。

node cleanTorrent IPTD-XXX.torrent

下載成功了!

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

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

最后

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

請(qǐng)您花一點(diǎn)時(shí)間將文章分享給您的朋友或者留下評(píng)論。我們將會(huì)由衷感謝您的支持!

相關(guān)文章

  • nodejs實(shí)現(xiàn)獲取本地文件夾下圖片信息功能示例

    nodejs實(shí)現(xiàn)獲取本地文件夾下圖片信息功能示例

    這篇文章主要介紹了nodejs實(shí)現(xiàn)獲取本地文件夾下圖片信息功能,涉及node.js針對(duì)文件、目錄的遍歷、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • 我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    我的Node.js學(xué)習(xí)之路(二)NPM模塊管理

    npm 是 Node.js 的模塊依賴管理工具。作為開發(fā)者使用的工具,主要解決開發(fā) Node.js 時(shí)會(huì)遇到的問(wèn)題。如同 RubyGems 對(duì)于 Ruby 開發(fā)者和 Maven 對(duì)于 Java 開發(fā)者的重要性,npm 對(duì)與 Node.js 的開發(fā)者和社區(qū)的重要性不言而喻。
    2014-07-07
  • Node.js對(duì)MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)模糊查詢的方法

    Node.js對(duì)MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)模糊查詢的方法

    模糊查詢是數(shù)據(jù)庫(kù)的基本操作之一,下面這篇文章主要給大家介紹了利用Node.js對(duì)MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)模糊查詢的方法教程,文中給出了詳細(xì)的介紹和示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • node.js通過(guò)url讀取文件

    node.js通過(guò)url讀取文件

    這篇文章主要為大家詳細(xì)介紹了node.js通過(guò)url讀取文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 如何在Nodejs中使用模塊fs文件系統(tǒng)

    如何在Nodejs中使用模塊fs文件系統(tǒng)

    這篇文章主要介紹了如何在Nodejs中使用模塊fs文件系統(tǒng),對(duì)nodejs感興趣的同學(xué),可以參考下
    2021-05-05
  • 十大 Node.js 的 Web 框架(快速提升工作效率)

    十大 Node.js 的 Web 框架(快速提升工作效率)

    Node.js 系統(tǒng)含有多種不同的結(jié)構(gòu),如 MVC、全棧、REST API 和生成器等。這些結(jié)構(gòu)不僅提升了 Web 應(yīng)用的開發(fā)效率,也優(yōu)化了開發(fā)過(guò)程。在這里,我們收集整理了十個(gè)高效的 Node.js 框架,希望對(duì)你有幫助。
    2017-06-06
  • Node.JS 循環(huán)遞歸復(fù)制文件夾目錄及其子文件夾下的所有文件

    Node.JS 循環(huán)遞歸復(fù)制文件夾目錄及其子文件夾下的所有文件

    在Node.js中,要實(shí)現(xiàn)目錄文件夾的循環(huán)遞歸復(fù)制也非常簡(jiǎn)單,使用fs模塊即可,僅需幾行,而且性能也不錯(cuò),我們先來(lái)實(shí)現(xiàn)文件的復(fù)制,需要的朋友可以參考下
    2017-09-09
  • Node.js搭建WEB服務(wù)器的示例代碼

    Node.js搭建WEB服務(wù)器的示例代碼

    這篇文章主要介紹了Node.js搭建WEB服務(wù)器的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳解node.js 下載圖片的 2 種方式

    詳解node.js 下載圖片的 2 種方式

    本文通過(guò)實(shí)例代碼給大家介紹了node.js 下載圖片的 2 種方式及下載遠(yuǎn)程圖片的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • node中如何使用redis的實(shí)現(xiàn)

    node中如何使用redis的實(shí)現(xiàn)

    本文主要介紹了node中如何使用redis的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論

舟山市| 钟山县| 灯塔市| 宁波市| 南昌市| 鹤山市| 广饶县| 武川县| 北海市| 洛隆县| 阳高县| 嘉兴市| 菏泽市| 保康县| 施秉县| 台北市| 吉林市| 沾化县| 将乐县| 赤壁市| 肥西县| 明水县| 乌苏市| 西盟| 吴忠市| 澜沧| 莎车县| 云阳县| 八宿县| 徐汇区| 时尚| 贞丰县| 西峡县| 凤台县| 泊头市| 德江县| 山东省| 成都市| 昌吉市| 靖江市| 那坡县|