爬虫做js逆向分析的思路
1. 为什么要做逆向
正常我们访问一个网站是由html css js 文件组成的,下图是某网站的正常访问。
当然我们也可以看到是谁调用了这个请求执行了什么(2图为某网站登录链接)
分析URL
我们可以看到这个链接他的请求参数,传输方式等。我们可以看到左图和右图的差距;同样的请求方式和fromdata会有这样的差距。如果有些经验的同学就会去找相关js了
如何快速查找js
- 我们可以在搜索查找或者链接js调用中查找相关js
- 可以看到出现了两个搜索到的结果
如何分析调用及复写js
如何准确无误的找到相关加密以及调试
我们在找到相关js后需要去找到一些疑似加密的函数,比如哈希,base64等
还可以从链接调用开始着手,这都是可以的。并没有一定哪种更加简便。这是其中的一个加密函数被我提取出来了。像这种加密很少的js我们可以用python复写,但是一旦加密函数过于庞大就需要将js抽取出用python+node或是webdriver来执行相关函数。
python复写hmac加密
import hmac
def get_singa_true(timestamp):sha1 = hmac.new("d1b964811afb40118a12068ff74a12f4".encode('utf8'), digestmod='sha1')sha1.update("password".encode('utf8'))sha1.update("c3cef7c66a1843f8b3a9e6a1e3160e20".encode('utf8'))sha1.update("com.zhihu.web".encode('utf8'))sha1.update(str(timestamp).encode('utf8'))return sha1.hexdigest()
另外一个混淆加密函数的查找
查找方法方式和调试技巧
下面是我提取出的另外一个加密函数大概有400多行
这个函数因为使用了windows对象,所以构造了相关的函数
这么大的混淆加密js我们如何处理呢?
400行的混淆js用python复写其实也不是不能,但是开发时间和破解效率都是一个很关键的问题
如果说开发时间紧急,那么此时我们就需要使用其他的方式来执行这段js
**第一种:**使用selenium+webdriver来执行本地文件,然后调用本地html上的js运行
**第二种:**使用python下的库exec.js来调用node来执行
如何验证这个混淆加密函数是否有效?
我们可以将这个js函数写到一个空白的html中,再用console.log进行调试。查看是否结果相同
使用node执行混淆js
使用node执行混淆js
上面几图中分别有如下几个坑
- 他会判断window对象是否为undifined
- 一个浏览器aotb的解码函数,需要从node中找到对应函数
- 需要构造一个windows对象,和部分变量;函数
相关代码
测试混淆加密函数
import execjs, osos.environ["EXECJS_RUNTIME"] = "Node"
IMAGE_LIST = [[17, 25.1875], [44, 28.1875], [69, 28.1875], [93, 25.1875], [109, 28.1875], [140, 26.1875],[177, 13.1875]]def get_js(js_location):f = open(js_location, 'r', encoding='UTF-8')line = f.readline()htmlstr = ''while line:htmlstr = htmlstr + lineline = f.readline()return htmlstrdef get_encrypt(ctx, all_args):return ctx.call('get_encrypt', all_args)if __name__ == '__main__':all_args = "client_id=c3cef7c66a1843f8b3a9e6a1e3160e20&grant_type=password×tamp=1551496362379&source=com.zhihu.web&signature=b92f67a96cc1fde5db2a93ed87a482a6ceda29ee&username=%2B8613252798967&password=123456qwe&captcha=&lang=cn&ref_source=homepage&utm_source="ctx = execjs.compile(get_js('jiami.js'))post_ctx = ctx.call("Q", all_args)print(post_ctx)
倒立图片的验证码坐标
import requests, json, base64,urllib.parse
from io import BytesIO
from PIL import Image
IMAGE_LIST = [[17, 25.1875], [44, 28.1875], [69, 28.1875], [93, 25.1875], [109, 28.1875], [140, 26.1875],[177, 13.1875]]def get_image_addr(img_str):if "," in img_str:img_str = img_str.replace(",", ",")img_list = img_str.split(",")captcha = {"img_size": [200, 44], "input_points": []}for i in img_list:captcha['input_points'].append(IMAGE_LIST[int(i) - 1])return captchaurl = "https://www.zhihu.com/api/v3/oauth/captcha?lang=cn"headers = {"Referer": "https://www.zhihu.com/signup?next=%2F","User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36","x-requested-with": "fetch",}response = session.get(url, headers=headers)print(response.text)response = session.put(url, headers=headers)print(response.status_code)content = json.loads(response.content.decode())image = Image.open(BytesIO(base64.b64decode(content['img_base64'])))image.show()captcha = input("请输入图片验证码 倒立图片请输入第几个文字以,为间隔(输入数字)")image.close()captcha = get_image_addr(captcha)captcha = urllib.parse.quote(json.dumps(captcha).replace(" ", ""))url = "https://www.zhihu.com/api/v3/oauth/captcha?lang=cn"response = session.post(url, headers=headers, data={"input_text": captcha})print(response.text)
爬虫做js逆向分析的思路相关推荐
- QAX答题页面js逆向分析(二)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.通过前端js解密,获取答案 二.通过Python,模拟请求完成自登录到答题的所有操作. 1.引入库 2. 程序结构 ...
- Python爬虫之Js逆向案例(6)-某道翻译
Python爬虫之Js逆向案例(6)-有道翻译 声明:某道翻译加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,距离上次分享js逆向案例已经有一个月了,在这期间每次在快要揭秘出来时.整理文章 ...
- 轻JS逆向分析“攒经验”项目之某交易所Sign加密参数逆向分析
最近忙着在搞大数据相关的东西,没什么太多时间去研究复杂的JS,所以给大家来几个练手的网站"攒攒经验"吧!这次出的系列是<轻JS逆向分析"攒经验"项目> ...
- python3爬虫进阶JS逆向学习(十一)
目的 目的:JS逆向的学习与交流 目标:分析咪咕音乐参数 目标网址:https://music.migu.cn/v3 // 若有侵权,请联系作者删除,谢谢! 思路分析 一.内容概览 二.请求参数分析 ...
- Python爬虫之Js逆向案例(2)-某乎搜索
Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...
- JS逆向分析新浪某站登录处RSA加密
文章目录 前言 RSA加解密 核心思想 Pyhon实现 NoPadding 新浪网实战 JS加密分析 JS函数调试 Py调用脚本 BurCrypto爆破 插件介绍 实战案例 总结 前言 在渗透测试过程 ...
- Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接
Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言 2. 实现过程 3. 运行结果 1. 前言 文章内容可能存在版权问题,为此,小编不提供相关实现代码,只是从js逆向说一说到 ...
- Python爬虫之Js逆向案例(8)-某乎x-zst-81之webpack
声明:某乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,相信各位童鞋通过上期<Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案>这篇文章了解了什么 ...
- Python爬虫:从js逆向了解西瓜视频的下载链接的生成
前言 最近花费了几天时间,想获取西瓜视频这个平台上某个视频的下载链接,运用js逆向进行获取.其实,如果小编一开始就注意到这一点(就是在做js逆向时,打了断点之后,然后执行相关代码,查看相关变量的值,结 ...
最新文章
- 重磅开源!所有的李航老师《统计学习方法》算法代码实现!!!
- 《例说8051:单片机程序设计案例教程》——2-4 指令格式
- cmake的使用--目标的编译附源码
- 【学术相关】海外博士一般朝九晚五,国内博士动辄十几个小时科研时间。为什么普遍认为海外博士水平比较高?...
- sdch: chrome支持的新HTTP传输压缩算法
- 利用Python工具进行打包功能
- 写作是最好的学习方法
- mysql into outfile语法_select into outfile
- SAE J1939学习笔记(一)
- 李航老师《统计学习方法》第二版第十一章课后习题答案
- 人工智能知识全面讲解:最简单的神经元模型
- 浅谈中国古代服饰纹样中礼制精神的体现
- pyqt5 选择打开文件夹与读取文件夹图片列表
- 秋招一个半月流水账+招银网路科技offer
- 双稳态电路的两个稳定状态是什么_555时基电路内部结构及其工作原理
- python基础螺旋线
- 厦门防腐木生产厂家厦门木天木屋运营模拟实盘周记20220915
- ZDM2004工具式绘图软件v1.7 for AutoCAD2004 1CD(水电版)
- GB9706.1-2007名词解释:电气间隙、爬电距离,绝缘、接地等
- MATLAB如何读取文件中的数据(全网最简便)
热门文章
- java实现地图导航功能吗_Java web实现百度地图导航
- 简单答题系统(判断题)
- 常见的树形结构(一)
- LibSVM中的松弛变量和惩罚因子
- Ubuntu18.04 realsenseD435i深度摄像头外参标定的问题
- Batch Normalization + Internal Covariate Shift(论文理解)
- IntelliJ IDEA 注册码(phpstorm等IDE)
- VMware -- 克隆虚拟机
- python 监控手机屏幕_Python 让手机实现监控功能的办法,解决一些困扰一些人很久的比如偷情的信任问题...
- 理想世俗化:受挫的年轻一代 未来在哪里