js逆向之实例某宝热卖(MD5)爬虫
目录
正常写
反爬
逆向分析
关键字搜索
打断点&分析代码
得出 sign 的由来
确定加密方式
写加密函数了
补全代码
免责声明:本文仅供技术交流学习,请勿用于其它违法行为.
正常写
还是老规矩,正常写代码,该带的都带上,我这种方法发现数据格式不完整.
应该后面也是大括号的.

--因为是get请求,所以我们看一下请求时的参数.

发现回调和一些类型.
那我们把那三个参数删了就行了.
然后直接 print(res.text) 拿到数据.(字符串)
转字典.
数据解析就OK啦...
那么,如何拿取多页数据呢???
通过分析,这是get请求,我们可以通过修改页数的参数获取数据.
反爬
但是...

--这里我们修改参数,发现竟然找不到此data键了,那是什么原因呢??!
逆向分析
那就分析数据包吧...
这里我们抓取三页的get请求载荷分析,
发现参数 t 和 sign 在变.
t 171开头,那就是时间戳了,肯定不同.
所以,我们就看看这个 sign 在搞什么鬼.
关键字搜索
所以,我们就要找 sign 关键字了.
打断点&分析代码
--继续,搜索,打断点,找'小偷'.
这里一个sign哎,好有问题,
一个断点,果然,停住了,说明调用了. 接着分析.

if (d.H5Request === !0) {var f = "//" + (d.prefix ? d.prefix + "." : "") + (d.subDomain ? d.subDomain + "." : "") + d.mainDomain + "/h5/" + c.api.toLowerCase() + "/" + c.v.toLowerCase() + "/", g = c.appKey || ("waptest" === d.subDomain ? "4272" : "12574478"), i = (new Date).getTime(), j = h(d.token + "&" + i + "&" + g + "&" + c.data), k = {jsv: w,appKey: g,t: i,sign: j}#sign等于一个j值.#j值由h函数生成.
这里我们进入断点的时候,c.data断点不一样,需要我们进入.(别找错了值)
得出 sign 的由来
j = h(d.token + "&" + i + "&" + g + "&" + c.data) d.token----->"144f4ba1ed9c3944eb03e90991372484" i--------->1711435532424 g---------->12574478 c.data--->data的载荷 144f4ba1ed9c3944eb03e90991372484&1711435532424&12574478&data的载荷 #h()生成字符串,就是上面这一大坨.
选中h函数,有一个超链接,点进去.
确定加密方式

兄弟,我说这个怎么这么眼熟,js逆向入门那节我还特意截了图...
...怎么又是MD5加密.
怎么???不确定?? O.0


就是你!!! MD5
写加密函数了
j = h(d.token + "&" + i + "&" + g + "&" + c.data) token:144f4ba1ed9c3944eb03e90991372484 此token在cookie里啊--> _m_h5_tk=144f4ba1ed9c3944eb03e90991372484_1711444131624; #因为cookie有时效性,所以过一段时间我们就要修改一下此参数值.(在cookie里面的_m_h5_tk) ------------------------------------------------------------------------------------------------------ i--------->1711435532424 import time a = time.time() #i--------->1711435532424 # 1711437621 # 1711437658229 print(int(a*1000)) #这个时间戳,我们保证位数相同就OK了. ------------------------------------------------------------------------------------------------------ g---------->12574478 #这个g是固定的,不信就多发几次请求. -------------------------------------------------------------------------------------------- c.data--->#这个就是我们上面的载荷,太长了,不复制了.
def jiami(i):token = '4b075d78ac2dcffff8b11d4698b6188c'#24046e79bde126ac3fee2e8508fd0da6t = str(int(time.time()*1000))g = '12574478'
c_data = '{"biz":"sem_single_pc","query":"{\\"keyword\\":\\"女装\\",\\"pid\\":\\"430673_1006\\",\\"sbid\\":\\"pcrm\\",\\"refpid\\":\\"mm_26632258_3504122_32538762\\",\\"clk1\\":\\"front_lu8bx4ug1n50nuva1ljh\\",\\"page\\":' + str(i) + ',\\"count\\":60,\\"offset\\":0}","feature":"predict_desc,promotion_price","spm":"a2e0b.20350158.31919782","app_pvid":"201_33.51.94.81_26284301_1711454667348","ctm":"spm-url:;page_url:https%3A%2F%2Fuland.taobao.com%2Fsem%2Ftbsearch%3Frefpid%3Dmm_26632258_3504122_32538762%26keyword%3D%25e5%25a5%25b3%25e8%25a3%2585%26clk1%3Da8eba43425e1e5ec18b3b33d575a5619%26upsId%3Da8eba43425e1e5ec18b3b33d575a5619"}'
code = token + '&' + t + '&' + g + '&' + c_data# print('这是第%s页数据'%i)return hashlib.md5(code.encode()).hexdigest(),t,c_data# .hexdigest() 拿到密文值.
--这里我们写出加密函数.
sign的参数有了.
时间戳有了.
请求数据有了.
--最后补全代码就行了.
补全代码

--这里循环拿数据有点问题,希望有懂的佬指点一下,谢谢~~
相关文章:
js逆向之实例某宝热卖(MD5)爬虫
目录 正常写 反爬 逆向分析 关键字搜索 打断点&分析代码 得出 sign 的由来 确定加密方式 写加密函数了 补全代码 免责声明:本文仅供技术交流学习,请勿用于其它违法行为. 正常写 还是老规矩,正常写代码,该带的都带上,我这种方法发现数据格式不完整. 应该后面也是大…...
7、jenkins项目构建细节-常用的构建触发器
文章目录 一、常用的构建细节1、触发远程构建2、其他工程构建后触发3、定时构建4、轮询SCM(Poll SCM)二、Git hook自动触发构建(☆☆☆)1、安装插件2、Jenkins设置自动构建3、Gitlab配置webhook三、Jenkins的参数化构建1、项目创建分支,并推送到gitlab上2、在Jenkins添加字…...
【前端学习——css篇】4.px和rem的区别
https://github.com/febobo/web-interview 4.px和rem的区别 ①px px,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中 有些人会把px认为是相对长度&…...
深入解析Oracle数据库中的标量子查询(Scalar Subquery)及其等价改写方法
在Oracle数据库中,标量子查询(Scalar Subquery)是一种特殊的子查询,它返回单个值作为结果,而不是一组记录。标量子查询通常嵌套在另一个查询的SELECT列表、WHERE子句、HAVING子句或表达式中,它就像一个可以…...
Pytorch多机多卡分布式训练
多机多卡分布式: 多机基本上和单机多卡差不多: 第一台机器(主设备): torchrun --master_port 6666 --nproc_per_node8 --nnodes${nnodes} --node_rank0 --master_addr${master_addr} train_with_multi_machine_an…...
win11 环境配置 之 Jmeter
一、安装 JDK 1. 安装 jdk 截至当前最新时间: 2024.3.27 jdk最新的版本 是 官网下载地址: https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下,新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…...
蓝桥杯刷题之路径之谜
题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组,我这里是分别用row和col来表示 每走一步,往左边和上边射一箭,走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈,看题目看了半天,因为…...
【深度学习】图片预处理,分辨出模糊图片
ref:https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/ 论文 ref:https://www.cse.cuhk.edu.hk/leojia/all_final_papers/blur_detect_cvpr08.pdf 遇到模糊的图片,还要处理一下,把它挑出来,要么修复,要么弃用。否…...
基础NLP知识了解
基础NLP知识… 线性变换 通过一个线性变换将隐藏状态映射到另一个维度空间,以获得预期维度的向量 $ outputs hidden_layer * W b$ 这里的W是权重矩阵,b是偏置项,它们是线性变换的参数,通过训练数据学习得到。输出向量的维度…...
Android 性能优化(六):启动优化的详细流程
书接上文,Android 性能优化(一):闪退、卡顿、耗电、APK 从用户体验角度有四个性能优化方向: 追求稳定,防止崩溃追求流畅,防止卡顿追求续航,防止耗损追求精简,防止臃肿 …...
QT程序打包
将exe文件单独拿出来放入一个单独的文件夹 保存qt安装路径下有如下这个文件 windeployqt.exe 在TCPFile.exe文件夹中使用以下cmd命令运行 即可打包 windeployqt 文件名.exe 成功打包!...
ARMday7作业
实现三个按键的中断,现象和代码 do_ipr.c #include "stm32mp1xx_gic.h" #include "stm32mp1xx_exti.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//获取要处理的中断的中断号unsigned int irqnoGI…...
Unity构建详解(4)——SBP的依赖后处理
【AddHashToBundleNameTask】 这个Task的作用很明确,给Bundle的名字附加一个Hash值: 根据bundle所包含的asset计算出来一个hash值添加在原来Bundle的末尾替换了BundleBuildContent.BundleLayout和aa.bundleToAssetGroup中的key 有两个问题,…...
使用GO对PostgreSQL进行有意思的多线程压测
前言 针对PostgreSQL进行压缩,有很多相关的工具。有同学又要问了,为何还要再搞一个?比如,pgbench, sysbench之类的,已经很强大了。是的,它们都很强大。但有时候,在一些特殊的场景,可…...
CI/CI实战-jenkis结合gitlab 4
实时触发 安装gitlab插件 配置项目触发器 生成令牌并保存 配置gitlab 测试推送 gitlab的实时触发 添加jenkins节点 在jenkins节点上安装docker-ce 新建节点server3 安装git和jdx 在jenkins配置管理中添加节点并配置从节点 关闭master节点的构建任务数...
修复ubuntu引导
一、制作ubuntu启动U盘 进入启动盘后,点击Try ubuntu,进入U盘的ubuntu系统。 二、配置和添加源 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update三、运行 Boot Repair重新制作引导 sudo boot-repair注意&#x…...
11.Notepad++
文章目录 一、下载和安装设置练习 以前在记事本上写的代码看上去有点累,因为所有的单词看上去都是黑色的,并且当代码出现问题后,它提示第三行,我们还需要一行一行去数。这些问题都可以由一个高级记事本: Notepad 来解…...
实现阻塞队列
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class Main { public static void main(String[] args) throws InterruptedException { BlockingQue…...
MySQL8.X驱动datetime映射问题
MySQL8.X驱动datetime映射问题 背景:项目由SSM项目迁移至SpringBoot,对mysql数据库驱动进行了升级导致出现问题。 原因:mysql驱动的8.X版本对数据库类型datetime映射为LocalDateTime。 解决:暂时不升级mysql驱动,mys…...
【Selenium】隐藏元素的定位和操作|隐藏与isDisplay方法
一、selenium 中隐藏元素如何定位? 如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了 但是吧~~~能定位到并不意味着能操作元素(如click,clear,send_keys) 二、隐藏元素 如下图有个输入框…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

