《封号码罗》python爬虫之AST在js逆向中表达式计算(十九)

Python爬虫JS逆向X-Bogus,signature加密算法,AST 理论篇 实战场景 AST 理论铺垫 AST 常见的节点AST 的公共属性AST 混淆逆向实战 阅读详情
const fs = require("fs");//文件读写
const parse = require("@babel/parser"); //解析为ast
const traverse = require('@babel/traverse').default;//遍历节点
const t = require('@babel/types');//类型
const generator = require('@babel/generator').default;//ast解析为代码


const code = `
const a = !![]+!![]+!![];
const b = Math.floor(12.34 * 2.12)
const c = 10 >> 3 << 1
const d = String(21.3 + 14 * 1.32)
const e = parseInt("1.893" + "45.9088")
const f = parseFloat("23.2334" + "21.89112")
const g = 20 < 18 ? '未成年' : '成年'
const _0x34e16a = '3,4,0,5,1,2'['split'](',')
`
// 	默认为 script,当代码中含有 import 、export 等关键字时会报错,需要指定为 module
const ast = parse.parse(code, {sourceType: "module"})

function replace_expression(path) {
    // path.evaluate()直接执行js代码返回一个对象
    // confident 置信度  value值
    const {confident, value} = path.evaluate()
    if (confident) {
        path.replaceInline(t.valueToNode(value))
    }
}

const visitor = {
    "BinaryExpression|CallExpression|ConditionalExpression": {
        enter: [replace_expression]
    }
}

traverse(ast, visitor)
const result = generator(ast, {jsescOption: {"minimal": true}}).code
console.log(result)
var a = '3,4,0,5,1,2'['split'](',');

console.log(a)

备注:学习K哥AST的笔记

爬虫反爬:一文掌握使用 AST 技术还原混淆的代码实战 抽象语法树是源代码的树状表示,每个节点代表代码中的一个结构。通过 AST,开发者可以以结构化的方式分析和操作代码,而无需直接处理字符串形式的源代码。AST 在编译器、解释器、代码分析和转换工具中广泛应用。通过 AST 技术,可以有效地解析和还原混淆的 JavaScript 代码。结合 Babel 等工具,能够快速分析代码结构并还原可读性更高的代码。在实际应用中,需根据混淆模式灵活调整还原策略,并注意代码的合法性和性能问题。 阅读详情

相关推荐

Python爬虫实战:某乎加密接口AST反混淆分析与数据抓取

随着互联网技术的快速发展,网站和应用程序越来越多地采用各种反爬虫机制来保护其数据。其中,JavaScript混淆和加密接口已成为现代Web应用对抗爬虫的主要手段之一。本文以某乎网站为例,深入分析其加密接口的实现原理,重点介绍如何使用AST(抽象语法树)技术反混淆JavaScript代码,并基于Python实现完整的数据抓取方案。文章将详细讲解AST反混淆的原理、步骤,并提供完整的Python实现代码,为Web爬虫开发者提供解决类似加密接口问题的思路和方法。关键词。

2201_76125261的博客 690

JS逆向 AST 抽象语法树解析与实践

这些示例展示了如何解析和处理 AST、解析和还原字符串和编码、处理常量、使用 eval 方法执行代码,以及如何解混淆代码。通过掌握这些技术,可以更好地理解和处理 JavaScript 代码中的复杂情况。

switch616的博客 1956

python-js逆向之AST语法树初学(一)

这两天看了什么是控制流平坦化,又研究了下ast语法数,如何把混淆乱序后的代码恢复之前的样子。 知识点:1.js包为 recast 2.Recast除了parse/print/builder以外, 还有三项主要功能: run: 通过命令行读取js文件,并转化成ast以供处理。 tnt(recast.types.namedTypes): 通过assert()和check(),可以验证ast对象的类型。 visit: 遍历ast树,获取有效的AST对象并进行更改。 下面举例一个案例: 通过 https://obfuscator.io/ 将原代码混淆乱序后输出,复制粘贴到饭碗里,再格式化得到: fu

逆向进阶,利用 AST 技术还原 JavaScript 混淆代码

什么是 AST AST(Abstract Syntax Tree),中文抽象语法树,简称语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种结构。语法树不是某一种编程语言独有的,JavaScript、Python、Java、Golang 等几乎所有编程语言都有语法树。 小时候我们得到一个玩具,总喜欢把玩具拆解成一个一个小零件,然后按照我们自己的想法,把零件重新组装起来,一个新玩具就诞生了。而 JavaScript 就像一台精妙运作的机器,通过 AST

Tips的博客 9204

【Benchmark 性能测试全指南:从核心原理到 CINEBENCH 实战解析】

本文深度拆解基准测试(Benchmark)的底层逻辑,详解数据集、工作负载、度量指标三大核心要素,分步演示测试流程与统计分析要点。结合 CINEBENCH R23 实战案例,揭秘 CPU 性能评估方法论,助你掌握系统性能量化与优化的核心技能。

rong_ha_ha的博客 6327

Claude Code 实战指南:用 AI 玩转终端编程,效率狂飙!

本文介绍了终端 AI 代理工具 Claude Code,涵盖常用命令、使用方法(如 init 初始化、权限配置、工作流程、上下文管理)、MCP 扩展工具及实战案例,展示其通过自然语言辅助开发的高效性与实用性。

个人技术 1万+

基于Python的JS逆向和AST抽象语法树

作用: 主要作用是为了防止js混淆的,一定程度上还原混淆,让代码的可读性提高。而在使用的过程中,我们就不可避免的用到了这个在线解析网站。注意,这里的3是个人口算出来的,在实际操作过程中,是需要获取 "+" 两边的值并计算其结果的。当你觉得你访问的路径已经完成了改完成的事,对代码已经没什么作用了,可以将其删除,可以看到,上面就是一个个的节点,这也是我们再熟悉不过的JSON结构的数据,这样的代码,很少有人能看得懂,但是将其加载到AST中就会变得好看一些。首先,我们在很多网站的源代码中,不可避免的会遇到类似于。

m0_68754495的博客 830

Surface Go 2 变身 Linux 开发本:保姆级 Ubuntu 20.04 双系统安装与驱动配置全攻略

本文详细介绍了如何将 Surface Go 2 变身为高效的 Linux 开发本,涵盖 Ubuntu 20.04 双系统安装、专用内核配置、驱动优化等全流程。通过 linux-surface 内核安装和硬件驱动优化,确保 Surface Go 2 的触控、笔输入、摄像头等功能完美运行,适合开发者打造便携生产力工具。

weixin_30596165的博客 616

Python操作AST解JS混淆

通过生成语法树(AST),可快速修改代码中的一些混淆处理,从而简化代码,便于后续分析。

李玺 5762

MATLAB与STK互联23:卫星对象操作(14)—仿真分析案例1,建立8个地面站,分析对卫星的可见性

学习到这里,我们有必要做个仿真分析案例,把之前我们学习的零散知识点串起来,看一下在真实的分析中怎么应用。 分析要求:建立8个地面站,分析每个地面站对某个轨道高度500km、倾角60°圆轨道的卫星,1天内的可见次数、可见弧长以及可见弧段间隔列表。 基本约束:地面站仰角8°~90°,作用距离<2000km,太阳矢量与地面站到卫星视线夹角不小于15°,可见弧段应大于30s。地面站站址可随机生成,但要求在南北纬50°范围内。 下面上代码: uiap = actxserver(‘STK11.application’)

ltylty001的博客 7490

深入解析ACS SPiiPlus运动控制器的托管API架构与实战应用

本文深入解析了ACS SPiiPlus运动控制器的托管API架构,详细介绍了其核心模块、设计哲学与实战应用。通过C#/.NET封装的托管接口,开发者能够高效实现多轴协同运动控制、EtherCAT总线集成以及事件驱动的异步编程,显著提升高精度工业自动化设备的开发效率与系统稳定性。

jwt8token的博客 861

AST定位表达式

1) BinaryExpression具有二进制运算符的表达式。(2) CallExpression函数调用,常见的格式。3)条件表达式ConditionalExpression。1)BinaryExpression具有二进制运算符。2)CallExpression函数调用。

之度的博客 957

避坑指南:Livox Mid-360双雷达SLAM配置中,那些官方文档没说的细节(IP设置、话题分离与时间同步)

本文详细解析了Livox Mid-360双雷达SLAM配置中的关键优化点,包括IP设置、话题分离与时间同步等官方文档未提及的细节。通过实战案例和代码示例,帮助开发者解决点云错位、IMU数据混乱等问题,提升SLAM系统的稳定性和精度。特别针对网络架构设计、驱动修改和时间同步机制提供了专业指导。

weixin_29745609的博客 425

爬虫 JavaScript 逆向进阶!利用 AST 技术还原混淆代码

这是「进击的Coder」的第 617篇技术分享作者:K 小哥来源:K 哥爬虫“ 阅读本文大概需要 47分钟。 ”目录文章较长,可作为 AST Babel 入门手册,强烈建议收藏!什么是 ASTAST(Abstract Syntax Tree),中文抽象语法树,简称语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种...

静觅 4797

AUTOSAR CP R18-10 架构总览与导航

AUTOSAR CP R18-10 架构总览 本文档系统整理了AUTOSAR CP R18-10版本的199篇技术规范,涵盖7大架构层级: 应用层(15篇):包含车身舒适、底盘控制、HMI、安全系统、动力系统等AI应用 RTE(1篇):虚拟功能总线规范 服务层(159篇):细分为系统服务(OS/ECU管理/加密)、存储服务、通信服务(CAN/LIN/Ethernet) ECU抽象层(20篇):I/O与通信硬件抽象 MCAL(41篇):微控制器驱动层 复杂驱动(14篇):CDD设计与SPAL支撑 规范模板(2

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 717

【WRF-UCM】BEP+BEM 模拟:README

【WRF-UCM】BEP+BEM 模拟:README

WW、forever的博客 222

爬虫逆向-AST解混淆

js代码是极不安全的,任何人都可以阅读,分析,复制,甚至篡改,于是各种混淆技术出现了 变量混淆 将带有含意的变量名、方法名、常量名随机变为无意义的类乱码字符串,降低代码可读性,如转成单个字符或十六进制字符串。 字符串混淆 将字符串阵列化集中放置、并可进行 MD5 或 Base64 加密存储,使代码中不出现明文字符串,这样可以避免使用全局搜索字符串的方式定位到入口点。 属性加密 针对 JavaScript 对象的属性进行加密转化,隐藏代码之间的调用关系。 控制流平坦化 打乱函数原有代码执行流程及函数调

4241

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

爬虫遇到AST加密怎么办?AST逆向入门到精通

本文深入解析AST加密技术在反爬虫领域的应用与逆向方法。文章首先介绍AST(抽象语法树)的基本概念及其作为反爬虫利器的原理,详细阐述AST加密的语法级混淆、抗静态分析和抗动态调试等优势。随后分析控制流平坦化、死代码注入等常见AST混淆手段及其特征识别方法。重点讲解AST逆向的核心思路与工具准备,包括静态分析、动态调试和AST操作工具的使用,并通过实战案例演示从混淆代码到核心逻辑提取的全过程。最后探讨进阶技巧与伦理边界,强调AST逆向技术已成为爬虫开发者的核心竞争力。

weixin_41943766的博客 2116

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JS逆向:AST还原极验混淆JS实战

本文仅供学习交流使用,请勿用于商业用途或不正当行为 如果侵犯到贵公司的隐私或权益,请联系我立即删除 AST是抽象语法树,名字感觉很高级,其实也不用怕,可以简单理解为是将JS代码归类后的JSON,并且提供了很多方法给你对这个JSON进行增删改查。 学习一个新东西,首先一定要搞清楚它有什么用,都不知道有啥用,学习它干啥,对吧 作为一个爬虫攻城狮,JS逆向也是家常便饭了,JS逆向经常会遇到各种混淆过后的代码,极其难以阅读,这时候就可以使用AST对这些混淆代码进行一定的还原处理,得到一个相对容易阅读的JS代码,方便

weixin_47202458的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

网页爬虫逆向与AST入门系列教程(结语)

在本系列教程中,我们深入了解了网页爬虫逆向与AST的原理与应用,掌握了相关的技术和方法。通过学习如何使用AST来分析和处理网页中的代码,我们可以更好地理解网页的结构和逻辑,有效地进行数据提取、反爬虫和安全检测等任务。希望这些知识能够帮助您在实际项目中更好地应用网页爬虫逆向与AST技术,提高开发效率和代码质量。

Jamson 2703

爬虫逆向-AST技术

本文系统介绍了V8引擎的工作原理及其对JavaScript性能提升的关键技术。首先对比了编译型与解释型语言的差异,指出V8通过"解释器+编译器"混合架构解决了传统解释型语言的性能瓶颈。详细解析了V8的四个核心执行阶段:Parse(将源码转换为AST)、Ignition(解释执行字节码并收集优化信息)、TurboFan(基于热点代码生成优化机器码)和Orinoco(垃圾回收)。重点阐述了AST技术在编译过程中的核心地位及其应用,包括词法分析、语法分析等编译步骤。最后介绍了Babel工具链及

ningmengjing_的博客 1568

网页爬虫逆向与AST入门系列教程(三、使用工具生成和可视化AST)

本文介绍了生成和可视化AST的工具和方法。掌握这些工具和方法,我们可以更深入地理解和分析代码的结构,实现更高效、精确的网页爬虫逆向。在下一篇文章中,我们将继续探讨AST的应用,敬请期待!

Jamson 3132

JS逆向:拨云见日,AST解混淆让代码分析变得如此简单

本文分析的是某国外的cdn,如果国内有使用该cdn的站点,请与本人联系立即删除,谢谢。遵纪守法是每个公民应尽的义务和责任。要分析的网站如下:"aHR0cHM6Ly9ib29raW...

Python3 爬虫实战 1:应对特殊字体,爬取猫眼电影实时排行榜 5701

js反混淆还原工具_JavaScript 混淆与逆向必读之 AST 节点类型名词基础

JavaScript 混淆与逆向必读之 AST 节点类型名词基础我在《Python3 反爬虫原理与绕过实战》一书中给出了“爬虫与反爬虫都是综合技术的应用”、“技术在对抗中进步”这样的观点。随着时间的推移、技术的普及和进步,Web 应用方给爬虫增加了越来越多的限制,其中效果最显著的就是代码混淆。单纯的加密算法或者自定义的字符处理函数已经无法满足防御需求了, Web 应用方将目光转移到了代码混淆技术。...

weixin_39612720的博客 976

browserify--将js代码解析为AST树并解析AST树

在服务端,nodeJS可以直接使用CommonJS规范来写,运行在浏览器中的前端代码也可以这样写,然后使用browserify可以将其转化为模块化写法,装载依赖模块。其原理就是将js代码字符串解析为AST树,然后遍历AST树分析出require的依赖项,使用我们自己写得require函数来加载依赖项即可。 具体原理可参考:browserify运行原理分析 这里面牵扯到两项比较大的功能,一项

fendouzhe123的专栏 7071
上一篇: 关于某壳找房webpack+RSA的js逆向
下一篇: 《封号码罗》python爬虫之AST在js逆向中删除冗余代码(二十)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值