蜜蜂采集器使用教程 - 对Crypto-JS加密的网页数据进行解密
有些网页会使用JavaScript的加密库Crypto-JS来加密网页数据,如果使用常规的思路进行处理,则非常麻烦,耗时耗力。本文介绍一种可以在蜜蜂采集器中使用的解密方法,供大家参考。
Crypto-JS的使用
Crypto-JS是一个基于MIT协议的JavaScript加密库,集成了MD5、SHA1、AES、DES、RC4等算法,可以非常方便地在网页或Node.js等场景中使用。网页中使用时,可以使用crypto-js.min.js。
加密时,可以使用如下代码:
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
解密时,可以使用如下代码:
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
实际使用时,可能调用会复杂一点,但思路差不多。
采集时解密
如上。如果网页中使用这种加密的数据,然后在网页加载完成后动态解密,则使用采集器时,常规采集方式处理起来非常费力。这里,我们将网页中的JavaScript解密代码抠出来,放到Node.js标签数据处理插件中,即可使用Node.js来执行JavaScript代码,进而实现解密功能。
打开蜜蜂采集器,菜单“采集”----“标签数据处理插件”页面,添加一个“Crypto-JS解密测试”的Node.js标签数据处理插件,并添加代码如下:
var CryptoJS=require("./crypto-js.min")
function inited(){
var ciphertext = bee.BEE_INPUT['value'];
var bytes = CryptoJS.AES.decrypt(ciphertext, 'test.com');
var decryptedData = bytes.toString(CryptoJS.enc.Utf8);
bee.BEE_OUTPUT['result'] = decryptedData;
bee.BEE_OUTPUT['code'] = 0;
bee.BEE_OUTPUT['msg'] = '成功';
//结果返回
bee.BeeCollector_Output();
process.exit(0);
}
这里,直接使用的js代码crypto-js.min.js。当然,也可以使用Node.js的Crypto-JS模块。
添加一个测试用的采集规则,并添加一个测试的标签“解密测试”,设置标签内容为测试内容“U2FsdGVkX1+I7qhf+Hzt2Nual49ytTZBCpf2pq/H1gBA47/68WBzGvZU3R2B1vTkivLxkHUNniuxEtBKihOuglnTy16XBviWZ08A4sWf34Q=”,启用“标签数据二次处理”,并添加“调用插件”处理项,选择刚刚添加好的标签数据处理配置,即可。点击“测试”,“调试”窗口输出了解密结果“Crypto-JS解密测试Crypto-JS解密测试Crypto-JS解密测试”。
实际使用时,可以会遇到JavaScript反调试等保护措施,应根据情况作相应处理。 |