• 一个反爬 JS 逆向分析的例子 转载:https://mp.weixin.qq.com/s/2luhB-AhMIzxVh6rPERzCA


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

    图片


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


    图片

    图片




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


    图片



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

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

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

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

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

    搜搜 vv 字段

     

    图片

    搜搜 oauth_token 字段

    图片

    搜搜 pwdencrypt 字段

     

    图片



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

    全局搜索一下 pwdencrypt 字段:

    图片


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

    图片



    可以看到:

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

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

    图片

    扣取加密代码函数

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

    图片

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

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

    图片

    接着在 node 环境中运行这段 JS:

    图片

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

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

    那这么调用呢? 

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

    图片

    如果提示UDB不存在咋办?

    那就改为:

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

    来测试一下吧:

    图片

    运行一波:

    图片

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

    ok,以上!

  • 相关阅读:
    Java——异步调用
    GTK3-demo 代码调用
    ef core code first 生成的数据库表去复数的方法
    nuxt全局挂载导航路由守卫
    vue导入,导出,列表展示excel数据
    JS之blob对象下载文件,解决word可能打开是乱码,xlsx文件打不开,图片显示格式不支持等问题
    程序猿的十一条浮躁表现
    RSA加密解密及加签验签
    冒泡排序
    Failed to parse source for import analysis because the content contains invalid JS syntax
  • 原文地址:https://www.cnblogs.com/testzcy/p/14390829.html
Copyright © 2020-2023  润新知