爬虫之简单js逆向

2023-11-15

本次js逆向没有存在代码混淆,所以还是比较简单的,重要的就是js逆向的思路,目标网站https://notice.qb.com/detail?noticeId=215让我们开始吧

进入网站后按F12,查看DOC中的,可以看出该网页一部分内容是异步加载而成
在这里插入图片描述

继续在XHR中寻找,发现了第一个common中就有我们需要的内容
在这里插入图片描述
然后点到Headers看看它具体是有哪些请求参数,大概知道哪几个是固定值,哪几个是变化的,接下来多刷新几次(如果碰到debug疯狂按F8),比较验证一下,最后得出结论,sig是动态变化的,ts是10位的时间戳,其他都是固定值(id是每篇文章唯一的,可视为固定)
在这里插入图片描述
我一般先是通过search来找找sig这个关键词,如果碰到代码混淆的话,就要用其他方法来寻找了,然而这个网站是真的简单…一找就找到了,就在第一个js中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

进入js后,按ctrl+F,再次搜索sig,顺利找到了一串代码
g.sig = (0, o.encrypt)(“sha256”, (0, o.encrypt)(“md5”, (0, o.encrypt)(“md5”, m))).toLowerCase()
以我敏锐的洞察力,我已经肯定这个就是我们要的sig了 ,但是还是需要验证一下
在这里插入图片描述
先在这几个地方打上断点,然后对参数g,f,m添加监听,这几个参数都与sig有关
在这里插入图片描述
回到Network下的XHR按F5刷新,稍等一会后按一下F8,看到右侧展开参数g后,里面的内容跟我们需要请求的参数,只差一个sig的差别,而接下来这个g.sig=大串加密,很明显是对sig赋值,那么究竟是怎么加密的呢
在这里插入图片描述
继续按F11,我们看到它跳转到一个方法中,该方法传过来两个参数,一个是字符串md5,一个是一串字符串,再来看一下这个方法(0,o.encrypt)(“md5”, m),是它没错了,我内心几乎已经肯定是md5加密,那么sig的赋值方式应该就是 ,对m的两次md5加密之后,再一次sha256加密,到此js逆向基本结束
在这里插入图片描述
如果不确定是不是md5加密,那就验证一下,继续按F8,一旦m显示了数值,就切到console,输入以下代码
在这里插入图片描述
随便找个md5在线加密的网站,例如https://www.sojson.com/md5/,把m的字符串复制黏贴,你看,是不是一样的
在这里插入图片描述

最后就是改写成python代码了,还是简单的,不会就百度,精辟,值得注意的就是,response.text中,是一大串base64加密后的字符串,解码一下即可

# -*- coding: utf-8 -*-

import json
import re
import time
import hashlib
import requests
import base64


header={
	'Content-Type': 'text/plain;charset=UTF-8',
	'Origin': 'https://notice.qb.com',
	'Referer': 'https://notice.qb.com/detail?noticeId=215',
	'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'

}

def main():
	# post链接
	path = 'https://api.qb.com/v1/common/'
	#获取sig和ts
	sig,ts = getSig()
	#伪造参数
	data = {'a': 'at', 'appId': 0, 'd': {'id': 215, 'ty': 0, 'con': 1, 'p': 0, 'ps': 10, 'la': 1}, 'ts': ts, 'reqLang': 0, 'sig': sig}

	response = requests.post(url=path, data=json.dumps(data), headers=header, timeout=5)
	response.encoding = 'utf-8'
	print(response.text)
	#正则提取内容
	justsoso= re.search(r"base64,(.*?)ggg==", response.text).group(1)
	just = justsoso+'ggg=='
	print(just)
	#base64解码
	finally_data = base64.b64decode(just)
	print(finally_data)
	file = open('1.jpg', 'wb')
	file.write(finally_data)

def getSig():
	#时间戳
	ts = int(time.time())
	#构造m参数
	m = 'a=at&appId=0&con=1&id=215&la=1&p=0&ps=10&reqLang=0&ts='+str(ts)+'&ty=070f239020d3a28b8d24ba1706f2dd7c03dcaa2fa5e7a077f1f517e5f2d3a68a1'
	#二次md5加密之后,再一次sga256加密
	sig = get_sha256(get_md5(get_md5(m)))
	return sig,ts

def get_md5(value):
	#MD5加密
	return hashlib.md5(value.encode("utf8")).hexdigest()

def get_sha256(value):
	#sha256加密
	return hashlib.sha256(value.encode("utf-8")).hexdigest()

if __name__ == '__main__':
	main()

最后…居然是一张图片,当时我就懵逼了,还没右键另存为来得快,不过js逆向基本就是这样
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫之简单js逆向 的相关文章

  • 相亲数据可视化分析系统

    前言 本文用python按城市寻找爬取 分析和保存了珍爱网上相亲男女的征婚信息 然后进行数据可视化分析 作者水平不高 第一次写文章 如果有错误 还望各位大佬指出 谢谢 一 爬取 分析并保存数据 1 爬取数据 分析网址可知 最终地址由基本网址
  • 万兴科技WondershareFilmora焕新上线已率先接入ChatGPT母公司OpenAI相关服务

    AIGC加速布局 近日 创意软件A股上市公司万兴科技 300624 SZ 旗下视频创意软件Wondershare Filmora焕新上线 新版本全新接入ChatGPT母公司OpenAI相关服务 率先在视频创作领域集成AIGC新技术 另据介绍

随机推荐

  • perf 性能调试

    perf 是 linux 系统调试工具之一 可以以一定采样频率 默认 4000Hz 监测指定进程中函数运行情况 从而分析程序的性能瓶颈 进而针对性优化 工具安装 perf 并不是 linux 系统默认自带的 需要安装 linux tools
  • css中div和spand,layout - DIV's vs. Tables or CSS vs. Being Stupid - Stack Overflow

    CSS may not be a religion but it is how browsers interpret HTML for layout Like it or not all modern browsers use some v
  • Qt帮助系统的制作

    原文链接Qt帮助系统的制作 Qt的帮助系统很好看 观察自带的帮助都是HTML格式 当然最好的方法是使用QtWeb模块 但好多Qt版本不支持啊 想到QTextBrowser可以显示图片啥的 一阵乱撸终于搞定 分享之 系列目录 本文是系列教程
  • 程序大佬用的电脑配置终于曝光了,难怪

    作为一名程序员 选一台适合自己的笔记本电脑至关重要 一款优秀的笔记本电脑可以提高工作效率 减轻工作压力 但是市面上的笔记本电脑种类繁多 不知道该如何选择 在本文中 我们将为大家推荐10款适合程序员使用的笔记本电脑 并附带京东的购买链接和价格
  • Sklearn fit , transform ,fit_transform

    一 关于sklearn fit 和transform sklearn里的封装好的各种算法使用前都要fit fit之后 可以调用各种API方法 transform是其中一个API fit原义指的是安装 使适合的意思 有点train的含义 但是
  • Java通过正则表达式获取域名

    由于 url getHost 获取域名会有漏洞 会获取不完整 因此通过正则表达式获取域名 上代码 String url http www linuxidc com entry 4545 0 Pattern p Pattern compile
  • Nginx 第三方健康检测模块的使用

    ngx http upstream check module 模块 模块开源地址 https github com yaoweibin nginx upstream check module 官网介绍 http tengine taobao
  • linux 网络

    网络基础 协议的概念 什么是协议 从应用的角度出发 协议可理解为 规则 是数据传输和数据的解释的规则 假设 A B双方欲传输文件 规定 第一次 传输文件名 接收方接收到文件名 应答OK给传输方 第二次 发送文件的尺寸 接收方接收到该数据再次
  • tf好朋友之matplotlib的使用——subplot分格显示

    tf好朋友之matplotlib的使用 subplot分格显示 分格显示的方法 利用plt subplot2grid进行分格显示 利用gridspec GridSpec进行分格显示 应用示例 在学习matlab的时候 图像是可以分格显示的
  • 1032. 挖掘机技术哪家强(20)

    1032 挖掘机技术哪家强 20 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN Yue 为了用事实说明挖掘机技术到底哪家强 PAT组织了一场挖掘机技能大赛 现请你
  • maven仓库中_remote.repositories的作用

    首先直接给结论 remote repositories的作用是当maven本地仓库缓存了jar pom的情况下修改了maven的配置文件 settings xml 后依然会去远程仓库获取 以org slf4j slf4j api 1 5 6
  • 科创板、香港主板、纳斯达克三地部门上市条件和要求

    转自 https zhuanlan zhihu com p 69144513 科创板 香港主板 纳斯达克三地部门上市条件和要求 发布于 2019 06 14
  • 一、创建型模式:工厂方法模式(Factory Method)

    请MM去麦当劳吃汉堡 不同的MM有不同的口味 要每个都记住是一件烦人的事情 我一般采用Factory Method模式 带着MM到服务员那儿 说 要一个汉堡 具体要什么样的汉堡呢 让MM直接跟服务员说就行了 定义 核心工厂类不再负责所有产品
  • MySQL-多表关联

    多表关联 多张数据表之间是可以有一定的关联关系 这种关联关系可以通过外键约束实现 多表的分类 一对一 一对多 多对多 一对一 一张表对应另一张表 适用场景 人和身份证 一个人只能有一个身份证 一个身份证只能对应一个人 建表原则 在任意一个表
  • python爬虫实战练手——————淘宝网站的爬取

    python爬虫是很好的数据分析手段 可以进行爬虫程序来进行爬取网站 下面是淘宝的爬取 淘宝搜索书包 然后得到以下的界面 注意到下面的分页 可以通过进行分页的改变来进行多页数据的爬取 爬取多页 这里用到了和重要的re库 也就是正则表达式库
  • Windows10下Linux子系统Ubuntu使用教程(8)——升级WSL2,及解决遇到的问题

    WSL 2 是 WSL 中体系结构的新版本 它更改 Linux 发行版与 Windows 交互的方式 WSL 2 的主要目标是提高文件系统性能并增加系统调用的完全兼容性 每个 Linux 发行版都可以作为 WSL 1 或 WSL 2 发行版
  • vue 获取服务端base64位图片之后的处理

    目录 Base64是什么 Base64可以在Url中传输吗 Base64是加密算法么 Base64的应用场景有哪些 Base64的优点 Base64的缺点 关于vue中img无法展示base64位图片的原因分析 Base64是什么 Base
  • CSS-选择器的基本用法

    目录 一 CSS的分类 1 行内样式 2 内部样式 3 外部样式 二 选择器是什么 三 选择器具体种类 1 类选择器 2 标签选择器 3 ID选择器 4 通配符选择器 一 CSS的分类 1 行内样式 通过 style 属性 来指定某个标签的
  • Java实现Token的生成与验证

    二 基于JWT的token认证实现 JWT JSON Web Token 其实token就是一段字符串 由三部分组成 Header Payload Signature 1 引入依赖
  • 爬虫之简单js逆向

    本次js逆向没有存在代码混淆 所以还是比较简单的 重要的就是js逆向的思路 目标网站https notice qb com detail noticeId 215让我们开始吧 进入网站后按F12 查看DOC中的 可以看出该网页一部分内容是异