爬虫逆向实战(二十一)-- 某某点集登录与获取数据

登录

一、数据接口分析

主页地址:某某点集

1、抓包

通过抓包可以发现登录接口是phonePwdLogin
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现有pwdsig两个加密参数
    在这里插入图片描述
  2. 请求头是否加密?
  3. 响应是否加密?
  4. cookie是否加密?

二、加密位置定位

1、pwd

(1)看启动器

查看启动器发现里面包含异步,所以无法正确找到加密位置
在这里插入图片描述

(2)搜索关键字

通过搜索关键字pwd:可以找到一个pwd的加密位置
在这里插入图片描述
在此处打上断点,再次登录,发现可以断住,并且此处是将明文转换为了密文,所以可以确定此处是加密位置
在这里插入图片描述

2、sig

(1)搜索关键字

通过搜索关键字sig:可以找到一个sig的赋值位置
在这里插入图片描述
在此处打上断点,再次登录,发现可以断住,并且sig的生成就在上方,所以可以确定此处是加密位置
在这里插入图片描述

三、扣js代码

1、pwd

通过控制台测试可以发现,pwd参数加密是使用的标准MD5加密,所以可以不扣js,使用标准MD5模块进行加密
在这里插入图片描述

2、sig

通过控制台测试可以发现,sig参数同样是使用的MD5加密,只不过,在加密前对参数进行了处理,所以我们可以将处理方法HS扣出,然后再使用标准MD5加密即可。
在这里插入图片描述

数据

一、数据接口分析

1、抓包

通过抓包可以发现数据接口是api/dy
在这里插入图片描述

2、判断是否有加密参数

  1. 请求参数是否加密?
    通过查看“载荷”模块可以发现有一个sign加密参数,还有一个token是登录成功后服务器返回的,不需要关心
    在这里插入图片描述
  2. 请求头是否加密?
  3. 响应是否加密?
  4. cookie是否加密?

二、加密位置定位

1、看启动器

查看启动器发现里面包含异步,所以无法正确找到加密位置
在这里插入图片描述

2、搜索关键字

通过搜索关键字sign:可以发现sign的生成位置
在这里插入图片描述
在此处打上断点,再次获取数据,发现可以断住,所以确定此处就是加密位置
在这里插入图片描述

三、扣js代码

通过加密位置可以看出,sign是由E方法生成的,调试执行进入E方法可以发现,是对数据进行加盐,然后使用sha256进行加密。其中加盐参数C经过多次生成,发现都是一样的,所以可以写死。
在这里插入图片描述

javascrapt源码

var CryptoJS = require('crypto-js')function H(n) {var e = [], t = "";for (var a in n)e.push(n[a]);for (var i = 0; i < e.length; i++)t += e[i] + "";return t += "JzyqgcoojMiQNuQoTlbR5EBT8TsqzJ",t
}function S(n) {for (var e = Object.keys(n).sort(), t = {}, a = 0; a < e.length; a++)t[e[a]] = n[e[a]];return t
}function E(n, e) {return CryptoJS.SHA256("param=" + JSON.stringify(n) + "&timestamp=" + e + "&tenant=1&salt=" + 'kbn%&)@<?FGkfs8sdf4Vg1*+;`kf5ndl$').toString()
}function get_login_params(phone, password) {var s = {"phoneNum": phone,pwd: CryptoJS.MD5(password).toString(),"t": (new Date).getTime(),"tenant": 1};var sig = CryptoJS.MD5(H(S(s))).toString()s['sig'] = sigreturn s
}function get_data_params(token) {var e = (new Date).getTime()var n = {"no": "dy0002","data": {"days": 1,"rankType": 5,"liveDay": "2023-08-24"}
}return  {param: JSON.stringify(n),sign: E(n, e),tenant: "1",timestamp: e,token: token}
}

Python源码

"""
Email:912917367@qq.com
Date: 2023/8/25 14:25
"""
import execjs
import requestsclass Spider:def __init__(self):self.session = requests.session()self.session.headers = {"Accept": "application/json, text/plain, */*","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "no-cache","Connection": "keep-alive","Content-Type": "application/json","Origin": "http://www.hh1024.com","Pragma": "no-cache","Sec-Fetch-Dest": "empty","Sec-Fetch-Mode": "cors","Sec-Fetch-Site": "cross-site","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36","sec-ch-ua": "^\\^Chromium^^;v=^\\^116^^, ^\\^Not)A;Brand^^;v=^\\^24^^, ^\\^Google","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "^\\^Windows^^"}with open('get_params.js', 'r', encoding='utf-8') as f:self.js_obj = execjs.compile(f.read())self.token = ''def login(self):url = "https://user.hrdjyun.com/wechat/phonePwdLogin"data = self.js_obj.call('get_login_params', '账号', '密码')response = self.session.post(url, json=data)self.token = response.json()['data']['token']print('token:', self.token)print(response.text)def get_data(self):url = "https://ucp.hrdjyun.com:60359/api/dy"data = self.js_obj.call('get_data_params', self.token)print(data)response = self.session.post(url, json=data)print(response.text)print(response)if __name__ == '__main__':s = Spider()s.login()s.get_data()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICCV 2023 | 小鹏汽车纽约石溪:局部上下文感知主动域自适应LADA

摘要 主动域自适应&#xff08;ADA&#xff09;通过查询少量选定的目标域样本的标签&#xff0c;以帮助模型从源域迁移到目标域。查询数据的局部上下文信息非常重要&#xff0c;特别是在域间差异较大的情况下&#xff0c;然而现有的ADA方法尚未充分探索这一点。在本文中&#…

C#2010 .NET4 解析 json 字符串

下载Newtonsoft.Json.dll using System; using System.Collections.Generic; using System.Linq; using System.Text;using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; namespace ConsoleApplication1 {class Program{static void Main(string[] args){strin…

SpringBoot+MyBatisPlus+MySql+vue2+elementUi的案例、java访问数据库服务、java提供接口服务

文章目录 前言后端关键代码前端关键代码完整代码 前言 1、项目不使用前后端分离。 2、在创建SpringBoot的时候要注意各个插件间的版本问题。 3、后端技术SpringBootMyBatisPlusMySql。 4、前端技术vue2elementUi。 后端关键代码 简单介绍 1、数据库名称ssm_db 2、表名称tbl_bo…

Centos 7 安装系列(8):openGauss 3.0.0

安装依赖包&#xff1a; yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl 安装插件&#xff1a; yum install -y bzip2 net-tools为什么要安装这两个&#xff1f; 安装bzip2 是…

关于使用远程工具连接mysql数据库时,提示:Public Key Retrieval is not allowed

我在使用DBeaver工具连接 数据库时&#xff0c;提示&#xff1a;Public Key Retrieval is not allowed&#xff0c; 我在前一天还是可以连接的&#xff0c;但是今天突然无法连接了&#xff0c; 但是最后捣鼓了一下又可以了。 具体方法&#xff1a;首先先把mysql服务停了&#x…

在编辑器中使用正则

正则是一种文本处理工具&#xff0c;常见的功能有文本验证、文本提取、文本替换、文本切割等。有一些地方说的正则匹配&#xff0c;其实是包括了校验和提取两个功能。 校验常用于验证整个文本的组成是不是符合规则&#xff0c;比如密码规则校验。提取则是从大段的文本中抽取出…

5G NR:PRACH时域资源

PRACH occasion时域位置由高层参数RACH-ConfigGeneric->prach-ConfigurationIndex指示&#xff0c;根据小区不同的频域和模式&#xff0c;38.211的第6.3.3节中给出了prach-ConfigurationIndex所对应的表格。 小区频段为FR1&#xff0c;FDD模式(paired频谱)/SUL&#xff0c;…

人工智能学习专栏

这个专栏就专门用来记录自己的深度学习的历程吧。从做MCU开始、Soc、Linux系统转行到AI领域&#xff0c;其过程是痛苦的。至少数学这块&#xff0c;那是花了很多时间去从头去学。但是还是有很多不懂的地方。坚持&#xff01;&#xff01;&#xff01;&#xff01;

LLMs 缩放指令模型Scaling instruct models FLAN(Fine-tuned LAnguage Net,微调语言网络)

本论文介绍了FLAN&#xff08;Fine-tuned LAnguage Net&#xff0c;微调语言网络&#xff09;&#xff0c;一种指导微调方法&#xff0c;并展示了其应用结果。该研究证明&#xff0c;通过在1836个任务上微调540B PaLM模型&#xff0c;同时整合Chain-of-Thought Reasoning&#…

打架斗殴行为识别算法

打架斗殴行为识别算法通过yolov7网络模型深度学习算法&#xff0c;打架斗殴行为识别算法对提取到的信息进行分析和比对&#xff0c;判断是否存在打架斗殴行为。打架斗殴行为识别算法一旦打架斗殴行为识别算法识别到打架斗殴行为&#xff0c;系统会立即生成预警信息&#xff0c;…

Android JNI系列详解之CMake编译工具的使用

一、CMake工具的介绍 如图所示&#xff0c;CMake工具的主要作用是&#xff0c;将C/C编写的native源文件编译打包生成库文件&#xff08;包含动态库或者静态库文件&#xff09;&#xff0c;集成到Android中使用。 二、CMake编译工具的使用 使用主要是配置两个文件&#xff1a;CM…

Ansible学习笔记12

playbook&#xff1a; playbook&#xff08;剧本&#xff09;&#xff1a;是ansible用于配置、部署和管理被控节点的剧本&#xff0c;用于Ansible操作的编排。 使用的是yaml格式&#xff0c;&#xff08;saltstack、elk、docker、docker-compose、k8s都会使用到yaml格式。&am…

js对url进行编码解码(三种方式)

第一种&#xff1a;escape 和 unescape escape()不能直接用于URL编码&#xff0c;它的真正作用是返回一个字符的Unicode编码值 它的具体规则是&#xff0c;除了ASCII字母、数字、标点符号" * _ - . /"以外&#xff0c;对其他所有字符进行编码。在u0000到u00ff之间…

【模拟】算法实战

文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作&#xff0c;模拟题目通常具有代码量大、操作…

Java稀疏数组

目录 1.稀疏数组 2.稀疏数组的使用 2.1 二维数组转换为稀疏数组 2.2 稀疏数组转换为二维数组 1.稀疏数组 稀疏数组&#xff08;Sparse Array&#xff09;&#xff1a;当一个数组中的大部分元素为相同的值&#xff0c;可使用稀疏数组来保存该数组&#xff0c;可以将稀疏数组…

记录--怎么实现一个3d翻书效果

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 本篇主要讨论以下两种翻书动画的实现&#xff1a; 第一种是整页翻转的效果&#xff1a; 这种整页翻转的效果主要是做rotateY的动画&#xff0c;并结合一些CSS的3d属性实现。 第二种折线翻转的效果&…

北京筑龙受邀出席中物联“采购供应链中国行—走进雄安”活动

日前&#xff0c;“采购供应链中国行—走进雄安”活动在河北雄安新区成功举办&#xff0c;来自30家相关单位的50余名领导和代表参加了本次活动。活动由中国物流与采购联合会公共采购分会主办&#xff0c;中国物流与采购联合会采购委、中国雄安集团有限公司、河北雄安新区招标投…

【数据结构】二叉数的存储与基本操作的实现

文章目录 &#x1f340;二叉树的存储&#x1f333;二叉树的基本操作&#x1f431;‍&#x1f464;二叉树的创建&#x1f431;‍&#x1f453;二叉树的遍历&#x1f3a1;前中后序遍历&#x1f4cc;前序遍历&#x1f4cc;中序遍历&#x1f4cc;后续遍历 &#x1f6eb;层序遍历&am…