当前位置: 首页 > news >正文

苏州网站制作设计禁止显示网站目录

苏州网站制作设计,禁止显示网站目录,大数据技术建设网站,app的开发需要多少钱博客配套代码发布于github:烯牛数据(欢迎顺手Star一下⭐) 相关知识点:[爬虫知识] 密码学:通往JS逆向路上必会的一环 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 本文意图逆向网站烯牛数…

博客配套代码发布于github:烯牛数据(欢迎顺手Star一下⭐)

相关知识点:[爬虫知识] 密码学:通往JS逆向路上必会的一环

相关爬虫专栏:JS逆向爬虫实战  爬虫知识点合集  爬虫实战案例


本文意图逆向网站烯牛数据的加解密算法,并最终成功得到返回结果,取得对应数据。

一、目标网站分析

看到该网站是随滑动加载页面,能确定其为ajax行为。

这里也能看到随滑动更新出来的新数据包。先将该包对应内容copy到curl,再粘贴至py。

数据是得到了,但初步看这个d长的离谱而且包含+与/。既然是base64编码,初步怀疑AES算法,而且关键字是d,似乎不太好处理。我们先放一下先来整加密逻辑。

二、加密逻辑

1. 找入口

请求携带参数快速浏览一遍,确定核心破解对象是payloadsig

搜一下payload=,这里有9个对应项。但只要观察旁边是否跟着sig,只有其中两项跟,两项都断点,再下滑,只有下图位置被断住,确定加密位置。

我们来好好分析下这里的加密逻辑。

s这个对象的payload与sig都分别被f与p赋值了,而f与p在这里的逻辑都已经构建完毕,我们只需要在扣js时把这一小部分带过来就行了。

另外这里的Object(x)(Object(y)(z))可以直接将其理解为x(y(z)),方便我们后面进行代码调试。

2.扣js

代码丢过来后看到u没定义

浏览器里选中这个u.c,跳到它的位置:是e1部分,再把它copy过来。同理还有u.d,u.e部分,也是这样都拿过来,改写成如下形式:

在控制台打印s并将其copy过来:

阿西吧,搞完一个还有一个,很烦人,不扣了。我们来看看这边代码环境:

发现没有:里面绝大多数我们想要的环境都在这一片。往上是webpack相关,往下是个自执行函数,也就是说我们把这一片红框内的copy过来就行了。同时别忘删除掉已经copy过来的函数,再执行:

这个简单,直接引入一下crypto的算法库即可:

现在不报错了,我们来将其组合包装打印下:

let f = e1(e2(JSON.stringify(payload)))
let sig = sig_(f)console.log(f)
console.log(sig)

ok,写个func留着之后备用:

function encrypt_data(payload){let f = e1(e2(JSON.stringify(payload))) // payloadlet sig = sig_(f)return {f,sig}
}

三、解密逻辑

1.找入口

这个d感觉不太好找的样子,我们多试试几个关键字方法吧。

decrypt搜索为空,寄;interceptor为空,寄;d搜出一万多...,寄;AES无相关,寄;

json.parse(  终于搜出了十五个,我们就老实点吧,为所有地方都打上断点再测试:

找到地儿了,就这儿:

大概观察下,发现跟加密算法思路其实差不多,都是纯代码构建只需要这两行。同时涉及到的u.a与u.b也如法炮制把它们全部扒过来

2.扣js

没问题,应该是因为之前加密提前补的环境,这边都不需要再补了。

同样写个func留着后面备用:

function decrypt_data(s){return JSON.parse(d2(d1(s)))
}

四、完整逻辑构建

于py处把对应需要的变量拿过来,并传入对应参数得值即可:

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
# 此处作用是处理编解码问题,部分地方如果不是默认一种编码如utf8,
# 在js与py的互传中就会出现问题。
import execjsjs_code =open('get_sign.js',encoding='utf8').read()
js_compile = execjs.compile(js_code)
# 省略xx代码...# 加密逻辑
payload = {"sort": 1,"start": 100,"limit": 40
}
result_dict = js_compile.call('encrypt_data',payload)
f = result_dict['f']
sig = result_dict['sig']
# 省略xx代码...# 解密逻辑
en_data = response.json().get('d')
data = js_compile.call('decrypt_data',en_data)
for i in data['list']:print(i['name'])

其中,上面这个payload就是具体要加载多少参数,直接更改参数即可拿到数据。

搞定,逆向完成。

五、小结

本案例难度并不算高,只是解密处位置寻找有点费劲。这也是个提示:js逆向本质是个经验活,你是拿着所有手上拥有的工具去挨个测试找方法。请求堆栈或者关键字参数等等。掌握足够多的工具才能在处理逆向时更得心应手。

📌 项目代码 + 后续案例合集 全部发布在 GitHub 仓库中,持续更新中,欢迎收藏!

http://www.dtcms.com/a/598894.html

相关文章:

  • 第三章 线性结构与栈
  • 优化志愿网站关于网站建设的入门书
  • 做网站的学什么网站建设课程设计百度文库
  • 大数据成矿预测系列(九) | 数据的“自我画像”:自编码器如何实现非监督下的“特征学习”
  • 装修公司网站 源码网站后台权限管理怎么做的
  • 网站开发流程进度规划百度搜索排名机制
  • 专门做鞋的网站中国网站设计欣赏
  • 网站推广策略成功的案例网站更新维护页面
  • 解锁懒加载:提升性能的神奇魔法
  • 那里可以做PC28网站的好看的 网站正在建设中源码
  • Vue项目集成bootstrap步骤及动态静态修改属性样式完整示例
  • 个人网站设计分析上海高玩seo
  • 大型门户网站建设是什么wordpress首页透明
  • 织梦做网站的教程惠州做网站广告
  • 做58同城这样的网站delphi网站开发教程
  • 《中医基础理论》- 番外篇-五神脏详解
  • 简述网站一般建设的流程图济南建设设备安装有限责任公司官网
  • 规划建立一个网站 项目成品网站nike源码1688
  • 广州网站建设公司网络安全优化中企动力北京总部地址
  • JavaScript基础知识总结(五)面向对象与原型,深浅拷贝,防抖节流
  • 韶关市住房和城乡建设局网站有限责任公司章程
  • 网站设计费报价表国际军事新闻最新消息
  • wls科普
  • 设计未来,解锁云端高效创作新纪元
  • 广州好的网站设计公司淘宝的网站是怎么做的
  • 网站制作大型公司龙华专业做网站公司
  • 在线 IP 查询如何做到更准确——选站、比对、校验全流程解析
  • 网络设计课程中对网页设计的报告临沂seo公司稳健火星
  • SiC MOS功率模块的并联均流技术
  • 做淘客网站需要备案南阳那里有做网站的