03.调用js执行代码
简单的js破解:通过python代码轻松实现
复杂的js破解:代码不容易重写,使用程序直接调用js运行获取结果
1. 两种常见js重写
- base64
- 特征:如果数据以==结尾,应该最先想到base64
- 对应python中的库:Base64
- md5
- 特征:如果数据是32位数字字母,应该想到md5
- 对应python库:hashlib
2. 复杂的js运行
- 使用python调用js方式
- PyV8
- 给予谷歌v8引擎, 最新版本是2010年的,不推荐使用
- Js2Py
- 纯python实现的解释器
- 性能不高,存在bug
- 对于大型高度混淆js会发生转化失败
- PyExecJs
- 用的比较多,多个引擎可选,推荐node.js,效率高
-
# 安装 # pip install pyexecjs # 测验使用 import execjs # print(execjs.get().name) # 简单示例 # jstext = """ # function add(a, b){return a+b;} # """ # # ctx = execjs.compile(jstext) # sum = ctx.call('add',1,2) # print(sum)
- PyminiRacer
- Selenium
- Pyppeteer
- 原生支持协程
- 性能比selenium更高
- 需要用到asyncio语法
- PyV8
- 一种性能更高的调用方式
- nodejs + express 搭建api服务
- nodejs安装 https://www.jianshu.com/p/d68e461f585c
- npm命令
- npm install express@3.21.2 -g : npm安装指定版本的包 -g: 全局安装
- cnpm install express@4.16.1 --save : 用淘宝npm安装包
- npm list -g --depth 0 : npm查看已安装的包
- npm list 当前项目需要的包
- express 安装 https://www.cnblogs.com/lpxj-blog/p/10651728.html
- express 找不到该命令的问题: npm install -g express-generator 安装这个工具
- npm install nodemon -g : 更改代码不用重启项目
- 创建一个项目文件夹, 在文件夹中输入 express -e projectname 创建项目, 将package.json文件中启动命令的 node替换成nodemon
- npm start 运行项目
- 在浏览器中访问127.0.0.1:3000
- 在入口文件 www文件中 可以通过 var port 变量修改端口号
- 用nodejs执行我们扣下来的js代码容易遇到的问题和解决方案:
- window对象:
- nodejs中没有window对象,如果要使用window对象要创建一个window对象指向global
- 利用jsdom之类的库
- Base64:
- window.btoa在nodejs中不存在
- 用 Buffer.from('aoying').toString('base64')
- window对象:
- nodejs + express 搭建api服务
- 到底选择那种调用方式比较好
- 使用非浏览器存在的问题,解决办法