这个JS代码是如何工作的以及它编码的形式是什么?

时间:2017-04-28 06:50:13

标签: javascript web-scraping screen-scraping scraper

过去3年我一直在开发数据抓取脚本,但从来没有像这样的艰难时期。

我正在抓取site,为了防止抓取,它会显示消息Please enable JS in your browser

然后有JS代码创建某种cookie或令牌,并重定向到实际页面。

https://pastebin.com/BL95Z48C

我只想知道代码编码的形式是什么?我怎么解码呢?

2 个答案:

答案 0 :(得分:1)

使用某种JavaScript Obfuscator对代码进行了混淆。

以下是该代码的去混淆/解码版本... p­astebi­­n­.com/­Rjcge­Tfs

答案 1 :(得分:1)

如此。到目前为止我做了什么?

我拿了你的代码,把它扔进了jsnice.orgjsbeautifier.org

我发现两个代码块包含在eval函数中。我只是将它们从evals中取出并将代码块再次复制到jsnice中。

从那里我做到了:

code.replace(/\/\*.+\*\//g, '')
.replace(/(?:\$|to8bitStream)\(([\d, ]+)\)/g, (a,b) => JSON.stringify(b.split(', ').map(x=>String.fromCharCode(x-63)).join``))
.replace(/(?:key|get)\((\d+)\)/g, (a,b) => JSON.stringify(parseInt(b,10).toString(36)))
.replace(/get\(0x([\da-f]+)\)/gi, (a,b) => JSON.stringify(parseInt(b,16).toString(36)))
.replace(/(?:forEach|createDom)\((\d+)\)/g, (a,b)=>746>parseInt(b))
.replace(/(?!=\s*)\["([a-z\d_]+)"\]/gi, (a,b)=>'.'+b);

获取该代码的修改版本,然后我将其重新投入jsnice以获得以下输出:

https://gist.github.com/GottZ/ce2f7dea949b2b7af64606426e56adde

我现在要约会几分钟,并继续对securemsg内容进行反混淆。

PS:请记住我是免费的。