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

爬虫逆向实战(十二)--某交易所登录

一、数据接口分析

主页地址:某交易所

1、抓包

通过抓包可以发现登录是通过表单提交的
在这里插入图片描述

2、判断是否有加密参数

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

二、加密位置定位

1、password

(1)看启动器

因为这个登录是表单提交,所以无法通过启动器点位

(2)搜索关键字

通过搜索关键字password =可以找到password的加密位置
在这里插入图片描述

2、execution

通过搜索关键字execution可以发现,这个值是直接写在html静态页面中的。
在这里插入图片描述

三、扣js代码

从定位到的password加密位置可以发现,网站仅仅使用了一个encode64方法转码,但是为了防止网站是改写的,我们还是先测试一下。将刚刚抓到的包中的password密文进行转码,可以发现成功转码成了明文,这就说明这个网站真的是只转了一下码。所以我们也就没有必要扣js代码了。在这里插入图片描述
execution是直接写在静态页面上的,所以我们只需要先请求静态页面,再使用正则表达式'<input type="hidden" name="execution" value="(.*?)"'execution的值匹配出来就可以了。

四、验证码

1、接口分析

通过点击图片更换验证码可以发现,每次更换验证码,网站都会发一个包请求sso/picture
在这里插入图片描述
通过查看“载荷”模块,可以发现这个请求会携带receiverenuuidmarkrand四个参数。其中mark是账号,rand是随机数,所以这两个参数不需要关心。而receiverenuuid这两个参数,我们仔细观察抓包可以发现,这两个参数来自于一个enuuid的接口
在这里插入图片描述
所以我们可以请求这个接口获取到这两个参数。
当我们在输入框输入图片验证码时,网站会请求sso/validlogin接口,携带输入的验证码来校验我们输入的验证码。
在这里插入图片描述

五、发送请求

1、思路

结合上面的分析,我们可以先请求html静态页面获取到execution参数,然后请求enuuid接口获取到uuidenuuid参数,获取到这两个参数之后,我们就可以获取图片验证码了,请求sso/picture接口获取到图片验证码,然后识别图片验证码(我这里使用的打码平台进行的识别)。携带识别出的验证码请求sso/validlogin接口,返回成功响应后,将密码进行encode64转码,再发包进行登录即可。

2、源代码

"""
Email:912917367@qq.com
Date: 2023/8/14 13:37
"""
import base64
import re
import timeimport requestsfrom utils.chaojiying import ChaojiyingClientclass Spider:def __init__(self, username, password):self.session = requests.session()self.session.headers = {"Origin": "https://owssso.szse.cn","Referer": "https://owssso.szse.cn/sso/login?service=https://www.szse.cn/application/userCenter/accountinfo/&locale=zh","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",}self.execution = ''self.uuid = ''self.enuuid = ''self.pic_str = ''self.username = usernameself.password = passworddef get_execution(self):url = 'https://owssso.szse.cn/sso/login?service=https://www.szse.cn/application/userCenter/accountinfo/&locale=zh'response = self.session.get(url=url)pattern = r'<input type="hidden" name="execution" value="(.*?)"'self.execution = re.findall(pattern, response.text)[0]def get_uuid(self):url = "https://owssso.szse.cn/sso/enuuid"params = {"service": "https://www.szse.cn/application/userCenter/accountinfo/","locale": "zh","_": int(time.time() * 1000)}response = self.session.get(url, params=params)info_data = response.json()self.uuid = info_data['uuid']self.enuuid = info_data['enuuid']def get_img_code(self):url = "https://owssso.szse.cn/sso/picture"params = {"receiver": self.uuid,"enuuid": self.enuuid,"rand": "0.004521081820116013"}response = self.session.get(url, params=params)with open('img.png', 'wb') as f:f.write(response.content)cjy = ChaojiyingClient('超级鹰账号', '超级鹰密码', '超级鹰应用id')im = open('img.png', 'rb').read()pic_data = cjy.post_pic(im, 1902)self.pic_str = pic_data['pic_str']print(self.pic_str)def check_img_code(self):url = "https://owssso.szse.cn/sso/validlogin"params = {"text": self.pic_str,"receiver": self.uuid,"mark": self.username,"type": "3","_": int(time.time() * 1000)}response = self.session.get(url, params=params)if '正确' in response.json()['message']:return Truereturn Falsedef login(self):encoded_bytes = base64.b64encode(self.password.encode('utf-8'))pwd = encoded_bytes.decode('utf-8')url = "https://owssso.szse.cn/sso/login"params = {"service": "https://www.szse.cn/application/userCenter/accountinfo/","locale": "zh"}data = {"receiver": self.username,"iframe": "false","password": pwd,"text": self.pic_str,"uuid": self.uuid,"type": "PL","execution": self.execution,"_eventId": "submit"}response = self.session.post(url, params=params, data=data)print(response.text)print(response)def run(self):self.get_execution()self.get_uuid()while True:self.get_img_code()if self.check_img_code():breakself.login()if __name__ == '__main__':spider = Spider('账号', '密码')spider.run()

相关文章:

爬虫逆向实战(十二)--某交易所登录

一、数据接口分析 主页地址&#xff1a;某交易所 1、抓包 通过抓包可以发现登录是通过表单提交的 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块&#xff0c;可以发现有两个加密参数password和execution 请求头是否加密&#xff1f; 无响应是…...

【C++入门到精通】C++入门 —— list (STL)

阅读导航 前言一、list简介1.概念2.特点 二、list的使用1.list的构造2.常见的操作⭕std::list类型的增、删、查、改 三、list与vector的对比温馨提示 前言 文章绑定了VS平台下std::list的源码&#xff0c;大家可以下载了解一下&#x1f60d; 前面我们讲了C语言的基础知识&…...

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件&#xff0c;同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法&#xff0c;它将复杂的实体分解成许多小的有限元素&#xff0c;以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…...

Kotlin Flow 冷流

协程&#xff1a;Flow 1、Flow是什么&#xff1f; 处理异步事件流可取消&#xff1a;通过取消协程取消Flow组合操作符&#xff1a;复杂逻辑处理缓冲和背压&#xff1a;发送和接收时用不同速度处理&#xff0c;实现流量控制、避免数据丢失 2、传统事件处理方案&#xff1a;同…...

Android Socket使用TCP协议实现手机投屏

本节主要通过实战来了解Socket在TCP/IP协议中充当的是一个什么角色&#xff0c;有什么作用。通过Socket使用TCP协议实现局域网内手机A充当服务端&#xff0c;手机B充当客户端&#xff0c;手机B连接手机A&#xff0c;手机A获取屏幕数据转化为Bitmap&#xff0c;通过Socket传递个…...

【云原生,k8s】Helm应用包管理器介绍

目录 一、为什么需要Helm&#xff1f; &#xff08;一&#xff09;Helm介绍 &#xff08;二&#xff09;Helm有3个重要概念&#xff1a; &#xff08;三&#xff09;Helm特点 二、Helm V3变化 &#xff08;一&#xff09;架构变化 &#xff08;二&#xff09;自动创建名…...

两个内网之间的linux服务器如何互相登录?快解析内网穿透

如果两个内网之间的linux服务器需要互相登录&#xff0c;或需要互相访问内网某个端口&#xff0c;担忧没有公网IP&#xff0c;可以使用的方法有 ngrok, 但并不方便&#xff0c;我们只需两条 SSH 命令即可。 SSH 内网端口转发实战SSH 内网端口转发实战 先给出本文主角&…...

sql server 存储过程 set ansi_nulls set quoted_identifier,out 、output

SQL-92 标准要求在对空值(NULL) 进行等于 () 或不等于 (<>) 比较时取值为 FALSE。 当 SET ANSI_NULLS 为 ON 时&#xff0c;即使 column_name 中包含空值&#xff0c;使用 WHERE column_name NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值&#xff0c…...

1046:判断一个数能否同时被3和5整除

【题目描述】 判断一个数n 能否同时被3和5整除&#xff0c;如果能同时被3和5整除输出YES&#xff0c;否则输出NO。 【输入】 输入一行&#xff0c;包含一个整数n。&#xff08; -1,000,000 < n < 1,000,000&#xff09; 【输出】 输出一行&#xff0c;如果能同时被3…...

优漫动游零基础如何学习好UI设计

智能时代的来临&#xff0c;很多企业都越来越注重用户体验这一块&#xff0c;想要有一个吸引用户的好页面&#xff0c;UI设计师岗位不可或缺&#xff0c;如今越来越多的人想要学习UI设计技术&#xff0c;那么对于零基础小白如何学习好UI设计呢? 零基础小白如何学习好UI设计…...

Android岗位技能实训室建设方案

一 、系统概述 Android岗位技能作为新一代信息技术的重点和促进信息消费的核心产业&#xff0c;已成为我国转变信息服务业的发展新热点&#xff1a;成为信息通信领域发展最快、市场潜力最大的业务领域。互联网尤其是移动互联网&#xff0c;以其巨大的信息交换能力和快速渗透能力…...

Mysql系列:Mysql5.7编译安装--系统环境:Centos7 / CentOS9 Stream

Mysql系列&#xff1a;Mysql5.7编译安装 系统环境&#xff1a;Centos7 / CentOS9 Stream 1&#xff1a;下载mysql源码包 https://dev.mysql.com/downloads/mysql/5.7.htmldownloads 选择MySQL Community Server>source_code>Generic Linux (Architecture Independent)…...

Docker容器与虚拟化技术:Dockerfile部署LNMP

目录 一、理论 1.LNMP架构 2.背景 3.Dockerfile部署LNMP 3.构建Nginx镜像 4.构建MySQL容器 5.构建PHP镜像 6.启动 wordpress 服务 二、实验 1.环境准备 2.构建Nginx镜像 3.构建MySQL容器 4.构建PHP镜像 5.启动 wordpress 服务 三、问题 1.构建nginx镜像报错 …...

elementUI date-picker 日期格式转为 2023/08/08格式

<el-form-item label"基线日期:" prop"baselineDate"><el-date-pickertype"date"v-model"form.baselineDate"placeholder"选择日期"format"yyyy/MM/dd"change"(date, type) > changeTime(date, …...

生成式 AI 在泛娱乐行业的应用场景实践 – 助力风格化视频内容创作

感谢大家阅读《生成式 AI 行业解决方案指南》系列博客&#xff0c;全系列分为 4 篇&#xff0c;将为大家系统地介绍生成式 AI 解决方案指南及其在电商、游戏、泛娱乐行业中的典型场景及应用实践。目录如下&#xff1a; 《生成式 AI 行业解决方案指南与部署指南》《生成式 AI 在…...

elementPlus——图标引入+批量注册全局组件——基础积累

因为我们要根据路由配置对应的图标&#xff0c;也要为了后续方便更改。因此我们将所有的图标注册为全局组件。&#xff08;使用之前将分页器以及矢量图注册全局组件的自定义插件&#xff09;&#xff08;所有图标全局注册的方法element-plus文档中已给出&#xff09; 全局注册…...

国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…...

TIOVX:opencv的Mat类图像零拷贝转为openvx的vx_image格式,通过Not节点无效果问题记录

问题描述 代码中&#xff0c;创建了一个opencv的Mat图像(并打印了所有的像素值)&#xff0c;然后通过vxCreateImageFromHandle函数将Mat图像转为了vx_image图像(通过映射的方式打印了所有的像素值&#xff0c;通过日志可以看出与之前打印相同)。然后创建graph&#xff0c;将其作…...

变压器故障诊断(python代码,逻辑回归/SVM/KNN三种方法同时使用,有详细中文注释)

视频效果&#xff1a;变压器三种方法下故障诊断Python代码_哔哩哔哩_bilibili代码运行要求&#xff1a;tensorflow版本>2.4.0,Python>3.6.0即可&#xff0c;无需修改数据路径。 1.数据集介绍&#xff1a; 采集数据的设备照片 变压器在电力系统中扮演着非常重要的角色。…...

ASEMI探索整流桥GBU814的独特优势和应用领域

编辑-Z 整流桥GBU814在众多电子元件中独树一帜&#xff0c;可在多种设备中发挥其重要作用。作为一款集高效性能和可靠稳定性于一身的整流桥&#xff0c;GBU814已在全球范围内赢得了广泛的好评。在这篇文章中&#xff0c;我们将详细介绍GBU814整流桥的优势和应用领域。 让我们首…...

小白程序员必看:收藏这份上下文工程指南,轻松玩转大模型!

本文深入浅出地介绍了上下文工程在大语言模型中的重要性&#xff0c;阐述了指令、示例、知识、记忆、工具和安全护栏等六种上下文类型。文章详细解析了上下文工程的四个基本阶段&#xff1a;撰写上下文、选择上下文、压缩上下文和隔离上下文&#xff0c;并强调了上下文窗口的作…...

2026 年直播电商如何进化?内容创作与管理的新模式是什么?

核心要点 问题&#xff1a; 为什么很多直播电商团队在 2025 年后明显感到"内容越来越多&#xff0c;但效果越来越不稳定"&#xff1f; 答案&#xff1a; 进入 2026 年&#xff0c;直播电商从"单场爆发"转向"内容体系竞争"。真正拉开差距的&#…...

String、StringBuilder、StringBuffer 的本质区别

作为 Java 开发者&#xff0c;String、StringBuilder、StringBuffer 这三个类几乎每天都在用。但面试官总爱问这道题&#xff0c;因为它背后藏着 JVM 内存模型、线程安全、性能优化等核心知识点。今天我们从本质出发&#xff0c;彻底把这三个类讲透。一、String 为什么不可变&a…...

解锁论文写作新姿势:书匠策AI,你的毕业论文“智囊团”!

在学术的浩瀚海洋中&#xff0c;毕业论文无疑是一座巍峨的灯塔&#xff0c;它不仅是对我们多年学习成果的总结&#xff0c;更是通往未来职业道路的一块重要敲门砖。然而&#xff0c;面对堆积如山的资料、错综复杂的逻辑框架&#xff0c;以及那令人头疼的格式要求&#xff0c;不…...

OpenClaw智能体应用第一集--飞书多智能体配置

1.理论知识1. 1 Agent&#xff08;智能体&#xff09; 一个 Agent 是一个完全独立作用域的"大脑"&#xff0c;拥有自己的三大核心要素&#xff1a; 从学术界和工程界的共识来看&#xff0c;一个生产级的通用 Agent 由以下 几大核心要素构成&#xff1a;1.2 模型 LLM …...

别再乱填了!手把手教你配置Keil的IROM1和IRAM1,让STM32程序跑得更稳

深度解析Keil内存配置&#xff1a;从原理到实战的STM32开发指南 当你第一次在Keil MDK的"Target"选项卡中看到IROM1和IRAM1的配置项时&#xff0c;是否感到困惑&#xff1f;这些看似简单的地址和大小设置&#xff0c;实际上关系到整个嵌入式系统的稳定运行。许多开发…...

FreeRTOS在STM32F407上的内存与栈空间优化全攻略:从CubeMX配置到避免堆栈溢出

FreeRTOS在STM32F407上的内存与栈空间优化全攻略&#xff1a;从CubeMX配置到避免堆栈溢出 在嵌入式开发中&#xff0c;资源管理往往是决定项目成败的关键因素。对于使用STM32F407这类资源受限的MCU进行多任务开发的工程师来说&#xff0c;如何合理规划和管理有限的RAM资源&…...

从单体到微服务:用Ruoyi-Vue-Plus框架快速搭建多租户后台系统(含AI模块开发避坑指南)

从单体到微服务&#xff1a;Ruoyi-Vue-Plus框架的多租户实战与AI模块开发精要 当企业级应用需要同时服务多个客户群体时&#xff0c;如何确保数据隔离与系统性能的平衡成为架构设计的核心挑战。Ruoyi-Vue-Plus作为一款基于Spring Boot的快速开发框架&#xff0c;其多租户实现机…...

Python tkinter文件对话框实战:5分钟搞定文件选择与保存功能(附完整代码)

Python tkinter文件对话框实战&#xff1a;5分钟搞定文件选择与保存功能&#xff08;附完整代码&#xff09; 在开发桌面应用程序时&#xff0c;文件选择功能几乎是必不可少的。无论是需要用户上传文件、保存处理结果&#xff0c;还是选择工作目录&#xff0c;一个直观的文件对…...

专访越擎科技创始人: 外骨骼的设计与仿真该如何入门

具身智能机器人领域的技术创新如火如荼&#xff0c;从轮式机器人&#xff0c;人形机器人&#xff0c;四足机器狗等不一而足。而从分类来看&#xff0c;外骨骼机器人作为增强人的能力的典型应用&#xff0c;不仅在医疗领域发挥重要作用&#xff0c;在工业应用等场景中也大大的增…...