网页抓取 加密html(修改现有DESDES算法进行匹配发现难度,费时费力来执行解密方法)

优采云 发布时间: 2022-04-04 03:11

  网页抓取 加密html(修改现有DESDES算法进行匹配发现难度,费时费力来执行解密方法)

  这几天收到一个有数据的项目采集

  通过对网站的初步分析,得到如下内容

  1.网站是用.NET开发的

  2.要抓取的内容是用DES加密的

  虽然已经获得了前端javascript的加解密算法,但我们都知道,交互开发跨语言算法是相当困难的。原计划是修改现有的php DES算法,发现太难、费时费力。后来突然想到能不能在php中调用js脚本来处理,这就是这个文章phantomjs的重点。事实上,这很简单。第一个版本打开网页,直接执行解码方法,但是这种方法处理速度会变慢。毕竟有网页访问的过程,然后不知道能不能调用本地构建的网页进行同样的处理。,我在windows上测试过,是可行的,但是我还没有在liunx上测试过。

  首先,构建一个本地网页很简单,就是一个引用解码脚本的空html文档,命名为Demo.html

  

Document

  然后开始编写一个名为 Model.js 的 phantomjs 处理脚本

  var page = require('webpage').create();

page.open('Demo.html', function (status) {

if(status !== 'success' ){

console.log('FAIL');

}else{

var a = '{keys}';

var b = '{encrypt}';

console.log(page.evaluate(function(c,d){

return jsdecrypt(c,d);

},a,b));

}

phantom.exit();

});

  解密方法是通过phantomjs的api page.evaluate来执行的。原计划是直接通过命令行传参,结果发现不成功。猜测是加密字符串的大小超过了命令行的最大字符长度。所以只能通过php读取js文件,然后替换。

  最后是php部分

  //模板数据替换

$str=file_get_contents("Model.js");//打开文件

$str=str_replace("{keys}",$a,$str);

$str=str_replace("{encrypt}",$b,$str);

file_put_contents("Decode.js",$str);//把替换的内容写到js文件中

//解码操作

$command = "phantomjs Decode.js";

print_r (passthru($command)); //因为输出内容为多行所以使用passthru方法

  最后说明一下,这个方法是调用第三方程序来处理。绝对不比原生直写算法快,但速度还是可以接受的。

  随便说几句,这个模板可以直接套用。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线