python爬虫之逆向破解_Python爬虫:一个反爬 JS 逆向分析的例子

挺久没发爬虫相关的教程啦,今天给大伙分享一下关于网站反爬对请求参数值的加密分析例子,主要还是看看思路。

定位加密点

在某网站中进行登录请求:e009d971cd12ff452be75ed39b3610fe477b9cdb.png

简单抓下包,点击登录按钮之后,可以在浏览器的控制台中看到相关的请求:d6023fc6593fa49dff0004e4fde4c787cbf31e78.png

fee671a2789470f2d2a927de12484e830dc378aa.png

接着往下拉,可以看到 POST 请求的参数信息:fe82a3dc95a05a1cdce1ee23f1e4d5944652f810.png

从中可以看出,除了 username 中的值比较明显之外,其它的参数值看的都是一脸懵逼...

其中比较关键的几个参数是:

1、pwdencrypt2、oauth_token3、vv

那么这时候是不是应该立刻去代码中搜索上面这几个字段呢?

不不不,这会增加我们的工作量,因为这些参数值有时候是加密的结果,也有时候是页面返回的值。如果你一开始就去全局搜索字段, 分析到最后发现是取网页的某个值,那岂不是浪费许多时间?

为了避免这种事情发生,我们可以直接拿刚刚 POST 请求中已经被加密的参数值搜一下,使用快捷键 CTRL + SHIFT + F 全局搜索 JS :

搜搜 vv 字段0841bb201e7aef5a59a644efb1d1b73ca5ed1957.png

搜搜 oauth_token 字段690b7e0f2d71c9666e8de8f226967f4e0ca4703a.png

搜搜 pwdencrypt 字段54517d8d6244186a12d558033de21b8ca8189c91.png

从搜索结果中可以发现, oauth_token 和 vv 为网页返回的值,而 pwdencrypt 全局搜索不到,大概率是加密的密文了,这样一下子就干掉了两个参数啦,接下来只需要分析 pwdencrypt 即可。

全局搜索一下 pwdencrypt字段:8416a3a3c1ea4ac77479f1f501c8aee5da0c89dd.png

可以看到,这里 pwdencrypt出现在 Login.auth_v2.js 中,我们点进去看看:bd02d088c183036cca987c6423179cd3e34a6b75.png

可以看到:

pwdencrypt在此使用了 RSAUtils.encryptedString 进行加密。

当然,你也可以在这里打个断点,然后重新点击登录按钮,来确定参数的加密位置:0e47efb70f39011d0bed47f3b1bde7d9b2fab129.png

扣取加密代码函数

先把鼠标悬浮在函数名称那,然后会弹出一个窗口来,你点一下就可以进入相关的函数了:d624a28632163ed3a14bc0e02b5094242ca00ee7.png

接着,你可能会一脸懵逼的看到一堆js代码,不知道这么扣?不要慌,只要你遇到不是套娃的写法以及一个Js文件多种方法实现的,简单粗暴的全部复制粘贴就行了,这个就网站就是如此。

首先全选我们定位到的 JS 代码,然后复制粘贴一波:5ac3137315bba9c547c7744ef35d061ff0c83826.png

接着在 node 环境中运行这段 JS:17d072c02882e7f07673787dea42bb18e02a2793.png

咦~报错了,提示我们找不到 window 对象。

没有window 那我们就在 JS 头部定义一个 Window=this,定义完后再运行,如果这时候啥事没发生,那就证明 JS 基本扣下来能用了。

那这么调用呢?

当然是他们怎么调我们就怎么调就行啦:bba05edcc6a1fd741d657408bf984eb64b17e32e.png

如果提示UDB不存在咋办?

那就改为:

window.UDB.SDK.rsa.RSAUtils.encryptedString(password)

来测试一下吧:b969c656d6561d8e01cf42c178811898852aac8e.png

运行一波:83e5fe8e350c24233753ab31d65e0e43cab4e5a0.png

你看,加密的结果是不是就得到了呀?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值