爬虫分析之 JS逆向某验滑动加密(1)

爬虫分析之 JS逆向某验滑动加密(1)

相关学习推荐:javascript视频教程

今天给大家来分析并还原某验的 JS 加密,做过爬虫的应该都知道这个验证码,如果你还没遇到以后你会碰到的相信我

话不多说,时间宝贵,进入正题!

抓包

进入官网,点击选择今天的主题滑动验证,其他验证类型的加密大同小异,只要你掌握了下面的方法!

爬虫分析之 JS逆向某验滑动加密(1)

点击按钮抓包,随意拖动一下,请求数据包如下

爬虫分析之 JS逆向某验滑动加密(1)

可以看到一堆请求参数,其实你要做的就是实现 w 的加密

爬虫分析之 JS逆向某验滑动加密(1)

点击进去,就能看到加密的 JS 文件,为便于分析将其保存到本地。

AST 还原

通过调试可以看到有大量的 unicode 格式的编码以及数组名称的混淆

爬虫分析之 JS逆向某验滑动加密(1)

传统解决方法是在浏览器 console 端输入就能看到它的庐山真面目,但是这种方法太麻烦了,接下来我们用 AST 来将其还原!

首先还原 unicode 编码,打开 AST 在线解析网站(https://blogz.gitee.io/ast/[1])

将待还原的代码放进去

爬虫分析之 JS逆向某验滑动加密(1)

可以看到只需要把 extra 属性删掉就能还原原来的值。遍历代码如下:

const parser = require("@babel/parser");const traverse = require("@babel/traverse").default;const t = require("@babel/types");  //操作节点的函数,比如判断节点类型,生成新的节点等:const generator = require("@babel/generator").default;  //生成还原后的代码const fs = require('fs');var jscode = fs.readFileSync("./slide.js", {    encoding: "utf-8"});const visitor = {        StringLiteral(path) {                delete path.node.extra            }}let ast = parser.parse(jscode);traverse(ast, visitor);let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});fs.writeFile('decode_slide.js', code, (err)=>{});复制代码

登录后复制

注意 jscode 就是之前扣下来的 JS 代码, 最后将还原后的代码写入到 decode_slide.js 文件中

接下来是混淆数组的还原。观察调试代码,所有的数组都是基于 JS 文件中开头的大数组 KBBji.$_Co,同时将该数组赋值给很多变量,这些变量名都是随机生成的。

所以接下来我们要做的找出这些变量名称,然后将其替换成对应的字符串值!

AST 在线解析一下

image.png
image.png

根据解析结果,编写相应的遍历代码

const visitor = {    VariableDeclaration(path){        const {declarations} = path.node;        if(!t.isMemberExpression(declarations[0].init))return;        if(declarations[0].init.property.name !== "$_Co")return;        if(declarations.length !==3 || declarations[0].init.property === undefined)return;        let value1 = declarations[0].id.name;        let value2 = declarations[2].id.name;        new_array.push(value1, value2);    }};复制代码

登录后复制

上面就将所有的变量名找出来了,找到之后就能将所有的这种形式 $_DFCB(66) 代码还原了,这样代码就能有个直观感受!

爬虫分析之 JS逆向某验滑动加密(1)

相信聪明的你很快就能写出还原的代码。经过上面几步整体还原后的代码是这样的

爬虫分析之 JS逆向某验滑动加密(1)

根据关键词很快就能搜索到加密所在位置,清晰可见!如果不还原你是搜不到的..还原后在网站上我们也能很快定位到加密位置,打上断点

爬虫分析之 JS逆向某验滑动加密(1)

同样的代码可读性相差多大,相信你一眼就能看到。你以为这样就完了?No!

Reres 替换

既然代码已经还原了,但是我们在网站上调试的时候还是混淆的代码,那怎么办呢?

接下来上另一个神器 Reres, 它的作用是将请求映射到本地,即你可以用本地 JS 来代替远程 JS 文件。

用法直接参考它的 github https://github.com/annnhan/ReRes[2]

好了有了这个东西,我们就能在网站上用还原后的 JS 来进行调试,太强了把!

效果如下:

爬虫分析之 JS逆向某验滑动加密(1)

tql,这下加密参数扣起来就没压力了吧!

后台回复 tql 获取相关代码!

想了解更多编程学习,敬请关注php培训栏目!

以上就是爬虫分析之 JS逆向某验滑动加密(1)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2725689.html

(0)
上一篇 2025年3月7日 23:25:27
下一篇 2025年2月24日 03:55:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 爬虫之 JS逆向某验滑动加密(2)

    相关学习推荐:javascript视频教程 上篇文章给大家分析还原了某验滑动的混淆代码,然后后台很多人在问后面的加密以及整个流程是啥,所以今天索性就把整个加密都弄出来吧 话不多说,时间宝贵,开干! 回到之前 w 的加密处 可以看到该函数接收…

    2025年3月7日 编程技术
    200
  • js面试过程中遇到的异步问题

    js中的宏任务与微任务 (推荐教程:js教程) 在面试过程中,基本面试官都会问你一些promise的问题,promise是es6的新内容,主要是用来优化异步的问题。笔试中经常会让你写一些promise和setTimeout的执行结果,这你就…

    2025年3月7日
    200
  • 消除if else, 让你的代码看起来更优雅

    javascript栏目介绍如何消除if else, 让你的代码看起来更优雅,一起来看看吧。 前言 应该有不少同学有遇到过充斥着if else的代码,面对这样的一团乱麻,简单粗暴地继续增量修改常常只会让复杂度越来越高,可读性越来越差。那么是…

    2025年3月7日
    200
  • js数组如何删除指定元素

    js数组删除指定元素的方法:首先给js数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引;然后通过得到的指定元素的索引,使用对应函数来删除指定元素。 首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引…

    2025年3月7日
    200
  • js json字符串如何转json对象

    js json字符串转json对象的方法:1、使用“$.parseJSON( jsonstr );”将json字符串转换成json对象;2、使用“eval(‘(‘ + jsonstr + ‘)&#8217…

    2025年3月7日
    200
  • js怎么将字符串转为数组?

    方法:1、使用split()方法,可以将给定字符串str拆分为字符串数组,语法“str.split(separator)”,separator指定分割的地方;2、使用Array.from()方法,字符串的每个字母都转换为新数组实例的元素。 …

    2025年3月7日 编程技术
    200
  • js的原型和原型链是什么

    js的原型和原型链是:1、原型模式是用于创建重复的对象,同时又能保证性能,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式;2、原型链是原型对象创建过程的历史记录,当访问一个对象的某个属性时,会先在这个对象本身属性上查找。 …

    2025年3月7日
    200
  • js如何调用php

    js调用php的方法:首先在页面【a.html】中调用相关语句,并在【b.php】中加入相关代码;然后当执行【a.html】文件时,就会调用【b.php】文件,并将【b.php】文件的输出作为JS语句来执行。 js调用php的方法: 举一个…

    2025年3月7日
    100
  • js怎么获取css属性

    js获取css属性的方法:使用【getComputedStyle(div)】方法获取,代码为【var a = document.defaultView.getComputedStyle(div);】。 【相关文章推荐:vue.js】 js获…

    2025年3月7日
    200
  • js框架与css框架的区别是什么

    js框架与css框架的区别是:1、js框架可以单独使用,不依赖css框架;2、有些css框架依赖于js才能实现一些效果;3、js框架是为了简化开发,规范项目,而css框架简化的是搭建界面的工作量。 js框架与css框架的区别如下: (视频教…

    2025年3月7日
    200

发表回复

登录后才能评论