Python爬虫进阶必备 | 某电竞加密参数分析( 什么花里胡哨,三行代码完成加密)
来源:互联网 编辑:wan玩得好手游小编 更新:2024-11-09 02:11:19 人气:
点击上方“咸鱼学Python”,选择“加为星标”
第一时间关注Python技术干货!
目标网站:
aHR0cHM6Ly93d3cuamRqMDA3LmNvbS8=
抓包分析与加密定位
首先打开开发者模式,抓包请求【图1-1】
可以看到这里的加密参数名为sign
拿到加密参数名,我们现在用两种方法定位加密位置
•xhr 断点•直接搜索参数
使用 xhr 断点只要分析堆栈肯定可以找到这个参数生成的地方,不过很麻烦,建议当你没方法通过检索参数名找到加密位置的线索的时候再使用 xhr 断点。【图1-2】
在这个例子当中,直接搜索 sign 就可以找到这个加密的参数位置了。【图1-3】
结果不多只有 5 个,逐个检索也可以找到,上图红框中标志的就是 sign 这个参数加密所在文件,我们打开在文件中再次检索。【图1-4】
可以看到,这个参数 sign 等于 a ,如果你没方法确认这个位置是不是,你可以打上断点重新加载看看是否会断在这个位置就知道了。
加密分析
找到加密位置之后,我们就来看看这个 a
他的加密到底是个啥。
经过断点可以看到a
是在这里生成的。【图2-1】
那么a
等于什么呢?就是下面这一串了。
var e, n, r = (new Date).getTime(), o = "timestamp=".concat(r,"&secret=").concat("aHVheWluZ19zZWNyZXRfYXBp"), a = (e = o,n = i()(e),encodeURIComponent(s.a.stringify(n)));
这段代码怎么理解?
其实非常简单,我给大家拆分一下。
a
的值是等于 encodeURIComponent(s.a.stringify(n))
但是生成a
中用到了变量n
,这个 n
又等于i()(e)
。
同样的这里还用到了i()
与e
,这里的e
= o
就是当前的时间戳,i()
这个方法返回了加密方法e
。
现在每一局部缺失的都找到了,只要明白这个加密方法e
是什么就完成了。
我们追进去看看【图2-2】
看到这个有没有感觉有点熟悉。
之前我写过一个文章有类似的代码。
当我追到_doFinalize
之后看到了下面这段代码。【图2-3】
看到上图红框的地方,我就知道:我好了,你们呢?
回顾上面的逻辑,下面这段代码就是sha256
+ base64
再将结果用 URL 编码一下,完事了。
var e, n, r = (new Date).getTime(), o = "timestamp=".concat(r,"&secret=").concat("aHVheWluZ19zZWNyZXRfYXBp"), a = (e = o,n = i()(e),encodeURIComponent(s.a.stringify(n)));
面对这样的加密,其实只要三行代码就完成了
var CryptoJS = require("crypto-js");
var sha256 = CryptoJS.SHA256('timestamp=1577106229851&secret=aHVheWluZ19zZWNyZXRfYXBp')
sha256 = CryptoJS.enc.Base64.stringify(sha256);
// 送一行打印代码
console.log(encodeURIComponent(sha256))
对于老手或者看过我之前文章的朋友,这个文章太简单了。
下面是给一些新手朋友的一些搜索关键词和解答一些问题。
第一个,s.a.stringify
怎么看出他是 Base64 的 ?
单步伐试到下图位置
然后使用F11
你就看到下面的代码了。
在这里还是没有看出来的话可以在浏览器中搜索js base64 stringify
就会看到很多类似的文章了。
第二个,实在不知道上面e
的加密是什么,就把源字符串复制到网上的在线加密网站上试试。很快就能得出结果了,敢于尝试,反正闲着也是闲着。
如果你这样还看不懂,为师送你一本秘籍,祝你神功大成。
如果本文对你有帮助,不如点个好看支持一下?
欢迎玩家到【 wan玩得好手游】查看最新变态版手游攻略,只需要在百度输入【 wan玩得好手游】就可以浏览最新上线送满vip的变态手游攻略了,更多有关手游的攻略和资讯,敬请关注玩得好手游网!