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

爬虫逆向实战(41)-某花顺登陆(Cookie、MD5、SHA256)

一、数据接口分析

主页地址:某花顺

1、抓包

通过抓包可以发现在登陆时,网站首先请求了pwdRangeCalcRegular.jsongetGS两个接口,接着请求dologinreturnjson2进行登陆,但是此接口会返回请先完成滑块验证码校验的响应。然后网站就会请求getPreHandle接口获取滑块验证码,在滑动验证码之后,会请求getTicket接口进行校验,校验成功之后,会再次发送登陆请求。
在这里插入图片描述

2、判断是否有加密参数

2.1 请求参数是否加密?

(1) getGS
通过查看“载荷”模块,可以发现有两个加密参数,unamecrnd
在这里插入图片描述
(2)dologinreturnjson2
这个接口的加密参数就比较多了,需要关注的有三个参数unamepasswdpasswdSalt,除了这三个参数以外,还有两个参数。一个是dsk,通过查看接口可以发现这个参数是上面getGS接口返回的,另一个是crnd,这个参数与getGS请求携带的crnd是一样的。
在这里插入图片描述

2.2 请求头是否加密?

通过查看“标头”模块可以发现,请求头中有一个Hexin-V,且这个参数的值与cookie中的v值一致,所以可以不需要关心这个请求头的值,把cookie中的v值生成出来,放到请求头中就可以了。
在这里插入图片描述

2.3. 响应是否加密?

2.4. cookie是否加密?

通过2.3可知有一个v的加密cookie

二、加密位置定位

1、加密参数

通过搜索关键字passwd:可以很轻松的搜索到加密位置,发现此处是大部分加密参数的加密位置,且getGS接口也是从此处请求的,从此处进入到getSaltGS方法内部,就可以定位到getGS接口所需要的参数。
在这里插入图片描述
同时我们可以发现,其中有几个参数我们是不知道的,captcha_phrasecaptcha_ticketcaptcha_signature,这三个参数通过变量名就可以看出是跟滑块验证码有关的,所以可以暂时不处理。除了这三个参数以外,还有两个参数scoreParamignore_upwd_score,通过搜索关键字scoreParam =可以发现这个参数的赋值位置。
在这里插入图片描述
不难看出,此参数就是网站根据请求pwdRangeCalcRegular.json返回的规则,对输入的密码进行评分。

2、Cookie

首先将cookie清除,然后运行hook脚本,刷新页面,接着跟栈,就可以发现cookie的生成位置了。
在这里插入图片描述

三、扣代码大致思路

1、第一步

先扣加密参数的代码,加密参数的代码只需要将thsencrypt加密对象所在文件的代码全部copy出来,然后补一下环境就可以了,其他代码缺啥补啥就行了。

2、第二步

扣cookie生成的代码,两种方案。
第一种方案,将cookie生成位置整个文件的代码copy出来,然后补环境,将cookie生成方法导出到全局即可,代码量1300行左右。
第二种方案,进入到cookie生成的方法中,一步一步的把用到的方法扣出来,cookie生成的方法中会有一些浏览器指纹检测,可以写死,也可以弄成随机的。指纹检测写死的话,代码量100行左右。

四、请求大致思路

1、第一步(可省略)

首先需要请求pwdRangeCalcRegular.json接口,获取到密码评分规则,然后通过网站的方法得到密码的分数。因为此接口返回的密码评分规则是不变的,所以可以直接复制下来用,省去这一个请求。

2、第二步

生成cookie,同时将其放入请求头中。

3、第三步

请求getGS接口,将响应结果保存以及请求时携带的crnd参数。

4、第四步(可省略)

从getGS的响应中提取dsk和请求时携带的crnd参数,发送第一次dologinreturnjson2。此次请求肯定返回的是失败的响应,因为还没有进行滑块验证。

5、第五步

请求getPreHandle接口,获取滑块验证码的背景图和滑块图,同时将响应中的sign参数保存。

6、第六步

识别滑块位置(注意:x轴和y轴的距离均需要),然后同时携带getPreHandle响应中的sign参数,发送getTicket请求,此请求验证成功后会返回ticket参数。

7、第七步

至此,dologinreturnjson2接口所需要的所有参数均已拿到,就可以发送请求进行登录了。

相关文章:

  • 关于scrapy模块中间件的简单理解
  • 案例分享:高科技企业产品管理部门设置和产品经理岗位设置
  • MySQL 面试突击指南:核心知识点解析1
  • YOLOv10改进 | 注意力篇 | YOLOv10引入YOLO-Face提出的SEAM注意力机制优化物体遮挡检测
  • 改进YOLOv7 | 在 ELAN 模块中添加【Triplet】【SpatialGroupEnhance】【NAM】【S2】注意力机制 | 附详细结构图
  • 浏览器组成的介绍
  • QT中QSettings的使用系列之二:保存和恢复应用程序主窗口
  • bash: nvcc: command not found
  • 查看 MAC 的 shell 配置文件
  • 2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改
  • 基于51单片机的篮球计分器设计
  • 武汉工程大学24计算机考研数据,有学硕招收调剂,而专硕不招收调剂!
  • 【C++题解】1741 - 求出1~n中满足条件的数的个数和总和?
  • 国产芯片方案/血氧仪方案SIC88336
  • 音乐界的颠覆与挑战分析
  • Akka系列(七):Actor持久化之Akka persistence
  • Asm.js的简单介绍
  • co.js - 让异步代码同步化
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • httpie使用详解
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript的使用你知道几种?(上)
  • js 实现textarea输入字数提示
  • node学习系列之简单文件上传
  • Python利用正则抓取网页内容保存到本地
  • Swift 中的尾递归和蹦床
  • Vue2.x学习三:事件处理生命周期钩子
  • Wamp集成环境 添加PHP的新版本
  • 大型网站性能监测、分析与优化常见问题QA
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 观察者模式实现非直接耦合
  • 诡异!React stopPropagation失灵
  • 开发基于以太坊智能合约的DApp
  • 深度学习入门:10门免费线上课程推荐
  • 责任链模式的两种实现
  • 最近的计划
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (笔试题)分解质因式
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (原创)可支持最大高度的NestedScrollView
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转载)从 Java 代码到 Java 堆
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 设置默认首页
  • .net 受管制代码
  • .Net 执行Linux下多行shell命令方法
  • .net反混淆脱壳工具de4dot的使用
  • .NET企业级应用架构设计系列之应用服务器
  • .NET运行机制