十八:爬虫-JS逆向(下)

news2024/11/26 19:54:08

一:AESDES

DES对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者。和信息的接收者在进行信息的传输与处理时,必须共同持有该密钥(称为对称密码),是一种对称加密算法。一般来说加密用的是encrypt()函数,解密用的是decrypt()函数。
AES/DES加密解密网址: https://www.sojson.com/encrypt.html

1.AESDES的区别

  • 加密后密文长度不同
    • DES加密后密文长度是8的整数倍
    • AES加密后密文的长度是16的整数倍
  • 安全度不同
    • 一般情况下DES足够安全
    • 如果要求高可以使用AES
  • DESAES切换只需要修改CryptoJS.DES =>CryptoJS.AES

2.RSA介绍

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。有两把对应密钥,公钥和私钥。用公钥加密只能用私钥解开,用私钥加密只能用公钥解密。
RSA加密解密网址:https://oktools.net/rsa

  • 公开密钥(publickey:公钥)
  • 私有密钥(privatekey:私钥)
  • 公钥和私钥是一对

二:fiddler抓包工具

1.什么是fiddler

概念: Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。
官网:https://www.telerik.com/fiddler
Windows安装fiddler:https://www.cnblogs.com/temari/p/13418037.html

2.fiddler的功能强大

  • 支持IEChromeFireFox等等浏览器
  • 可以在phonepad等移动设备进行连接
  • https://www.cnblogs.com/conquerorren/p/8472285.html
  • https://www.cnblogs.com/woaixuexi9999/p/9247705.html

3.fiddler抓包工具原理

图解:

image.png
具体步骤:
1、客户端 向服务器 发起 HTTPS 请求
2、fiddler拦截客户端请求,伪装成客户端向服务器进行请求
3 、服务器 向 客户端 返回服务器的 CA证书。 (实际上已经被fiddler拦截)
4、fiddler拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,替代服务器的证书后发给客户端。
5、客户端接收到服务器(实际上是fiddler的证书) 的证书后,生成一个对称秘钥,并用fiddler发送回来的证书公钥加密,发送给 服务器(实际发送给了fiddler)
6、fiddler拦截客户端的响应,用自己的私钥解密对称秘钥 (这里已经拿到了对称秘钥),然后用服务器证书公钥加密,发送给服务器。
7、服务器用自己的私钥解密对称秘钥,向客户端(实际是fiddler)发送 响应
8、fiddler拦截服务器响应,替换成自己的证书会后发送给客户端。
9、至此,链接建立, fiddler拿到了 服务器证书的公钥和客户端和服务器协商的对称秘钥,之后就可以解密或者修改加密的报文了。

4.fillder配置移动数据包

fiddler的配置:
  1. HTTPS
  • 1.1 让fiddler能够捕获https的请求

  • 1.2 安装证书




  • 1.3 检查证书是否安装成功


2. Connections


最后点击"OK", 重启fiddler
win7参考https://blog.csdn.net/qq_35189120/article/details/126514770

三:代码实例

1.需求

获取雪球热帖数据:
image.png

2.目标网址

https://xueqiu.com/today#/

3.详细步骤

(1)确定数据接口

image.png
image.png

(2)验证反爬并找到反爬参数

image.png
image.png

(3)确定cookie反爬参数
import requests


headers = {
    "Accept": "*/*",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
    "Cache-Control": "no-cache",
    "Connection": "keep-alive",
    "Pragma": "no-cache",
    "Referer": "https://xueqiu.com/today",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest",
    "elastic-apm-traceparent": "00-be07869557648708e851c1c12256571e-02aff688370889e7-00",
    "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"macOS\""
}
cookies = {
    "acw_tc": "2760827616983046343678048ecca70edab9018ffae9e3f803778ce02ed758",
    "acw_sc__v2": "653a13fa088f0aa6583d357bc0b311b21f86ee76",
    "xq_a_token": "e2f0876e8fd368a0be2b6d38a49ed2dd5eec7557",
    "xqat": "e2f0876e8fd368a0be2b6d38a49ed2dd5eec7557",
    "xq_r_token": "2a5b753b2db675b4ac36c938d20120660651116d",
    "xq_id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTcwMDY5OTg3NSwiY3RtIjoxNjk4MzA0OTk2MzgyLCJjaWQiOiJkOWQwbjRBWnVwIn0.R-BOElv8npRZjzcwE0es_6Ex1qIL2CGm3Rgr07o3E7BrTkmvLr83gliSH0JMVyqUKa80yJZQIdPODyNZIuGXcAZ0TUl4Hcl921wjExzlwI2LjuTuXkZRyi-0qEBOHUJUXR1f42naARFS35wytf-ptEzE70lDn60AXuYXS3Aa-jswDXwHKMwLBOX7w5K8Eyo8Oa6kzWapHHUqb5xNZ8m2FdLaWUEoKNzIXk_euqfFH2X37C4lSoFZY3P6Wf_vcca0vszGBLRXwtXM2Iu9e8-AIy_d2mZC-bCVQWdLuqJydgSGi9uo9SquQAEm_f7Y4jrQIPh_2SSUjVPzwXCx0_0zhw",
    "cookiesu": "821698305020757",
    "u": "821698305020757",
    "device_id": "1dfbc883865d3be224360f9104867c1d",
    "Hm_lvt_1db88642e346389874251b5a1eded6e3": "1698305021",
    "Hm_lpvt_1db88642e346389874251b5a1eded6e3": "1698305333"
}
url = "https://xueqiu.com/statuses/hot/listV2.json"
params = {
    "since_id": "-1",
    "max_id": "-1",
    "size": "15"
}
response = requests.get(url, headers=headers,cookies=cookies,params=params)

print(response.text)
print(response)

image.png
image.png

(4)寻找xqatxq_a_token参数值

image.png
清空cookie 刷新页面 过掉debuger filter查找分析:
image.png
image.png
image.png

(5)分析acw_sc__v2的参数生成

由于acw_sc__v2是在cookie中生成的,所以咱们直接下hook_cookie脚本
清空缓存、数据包、打上script断点、刷新页面、遇到无限debugger
image.png
image.png
image.png
混淆代码详细解读:
image.png
image.png

image.png

(6)详细推演acw_sc__v2的生成逻辑

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

(7)arg1_0x5e8b26变量值的寻找

image.png
_0x5e8b26为固定生成的值,没必要去分析怎么生成的原理了 但是arg1是每次变化的 所以咱们继续分析
image.png
发现就是一变量 实际上就是咱们对gettoday1发请求的js代码中的值:
image.png
获取arg1的值:
image.png

(8)重构python代码 进行逆向还原

image.png
image.png
image.png

(9)对获取json数据进行解析提取 提取出目标字段

解析这一块就很简单我就不说了 提醒一点 如果要在详情页中获取数据 找这个参数即可:
image.png

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

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

相关文章

Linux服务器安装操作Nginx

1.下载nginx压缩包 //进入/usr/local目录创建一个文件夹 cd /usr/local mkdir nginx cd nginx //下载tar包 wget http://nginx.org/download/nginx-1.20.1.tar.gz 2.配置nginx安装所需的环境 1. 安装gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gc…

Linux查找命令@which、find

目录 which概念语法作用 find概念语法按文件名查找按文件大小查找 作用演示一演示二演示三 通配符 总结 which 概念 which 是一个常用的 Linux/Unix 命令,用于查找并显示指定命令的绝对路径。 语法 which 要查找的命令 》无参数。 》 which后面,跟要查…

Android studio Progress Bar 进度条应用设计

一、水平进度条: 1)、xml布局文件: 2)、java文件: progressBar1 = findViewById(R.id.progressBar); progressBar2 = findViewById(R.id.progressBar2); public class AlarmTask extends TimerTask {@Overridepublic void run() {progressValue++;if (progressVa…

计网知识点回归

概述 计算机网络的定义: 不同地理位置的计算机通过通信电路实现资源共享 计算机网络的组成: 资源子网——提供共享的软硬件资源 通信子网——提供信息交换的网络接点和通信线路 计算机网络分类: 按拓扑分:星形 树形 总线型 环形…

清华大学生物信息学课件资料分享

清华大学鲁志老师实验室在网上分享了他们的生信课程学习资料,有电子书,PPT和视频,真是生信学习者的福音。 实验室网址是: https://www.ncrnalab.org/courses/#bioinfo2 可以看到,课程有针对本科生的,也有针…

shp文件与数据库(创建表)

前言 第三方库准备 shp文件是什么?笔者就不多做解释。后面将使用python的一些第三方库 1、sqlalchemy 2、pyshp 3、geoalchemy2 4、geopandas 这四个是主要的库,具体怎么使用可以参考相关教程,当然还有其他库,后面在介绍。…

uniapp 微信小程序跳转外部链接

一、背景: 开发小程序时,跳转到内部路径通常会使用:uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab等方法,可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…

【KingbaseES】DataGrip配置链接KingbaseES V8R6数据库

新建驱动 填写内容如下: defaultjdbc:kingbase8://{host::localhost}:[{port::54321}]/[{:database::test}] 点击OK保存 测试链接 出现上图证明已经能链接了,保存链接看看数据库是否有我们的数据 发现好像什么都没有 再尝试,发现现在可以…

前端发开的性能优化 请求级:请求前(资源预加载和预读取)

预加载 预加载:是优化网页性能的重要技术,其目的就是在页面加载过程中先提前请求和获取相关的资源信息,减少用户的等待时间,提高用户的体验性。预加载的操作可以尝试去解决一些类似于减少首次内容渲染的时间,提升关键资…

ArkTS - 数据持久化

一、概述 应用数据持久化,是指应用将内存中的数据通过文件或数据库的形式保存到设备上。内存中的数据形态通常是任意的数据结构或数据对象,存储介质上的数据形态可能是文本、数据库、二进制文件等。 持久(Persistence)&#xff0…

如何查看崩溃日志

​ 目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1:手机设置查看崩溃日志 方式2: Xocde工具 方式3: 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四:控制台资源库 线上崩溃日志 线上监听crash的几种方式 方式1: 三…

GEC6818科大讯飞离线语音识别

GEC6818科大讯飞离线语音识别 文章目录 GEC6818科大讯飞离线语音识别一、 下载科大讯飞离线语音SDK二、 解压文件夹后三、与GEC6818开发板一起使用3.1 使用科大讯飞的离线语音在ubantu中运行,作为服务端进行关键字的识别3.2 call.bnf-->hehe.bnf3.3 asr_offine_s…

JavaWeb基础(1)- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件监听、正则表达式)

JavaWeb基础(1)- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件监听、正则表达式) 文章目录 JavaWeb基础(1)- Html与JavaScript(JavaScript基础语法、变量、数据类型、运算符、函数、对象、事件…

什么是软件安全性测试?如何进行安全测试?

一、什么是软件安全性测试? 软件安全性测试是指对软件系统中的安全漏洞进行检测和评估的过程。其目的是为了确保软件系统在面对各种安全威胁时能够保持其功能的完整性、可用性和机密性。 二、软件安全性测试可以通过以下几个步骤来进行: 1. 需求分析&a…

强化学习8——在冰壶环境中使用策略迭代和价值迭代算法

冰壶环境 环境介绍 OpenAI Gym库中包含了很多有名的环境,冰湖是 OpenAI Gym 库中的一个环境,和悬崖漫步环境相似,大小为44的网格,每个网格是一个状态,智能体起点状态S在左上角,目标状G态在右下角&#xf…

计算机毕业设计----SSM BBS论坛

项目介绍 本项目包含前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,删除或者编辑用户的帖子,后台管理,友情链接管理,用户管理,版块管理,网站设置,用户设置,版块主题管理等功能。 用户角色…

fpmarkets盘点成功交易者的十个习惯(一)

在交易中能够盈利一次,fpmarkets认为这种情况100%的交易者都会做到,但是要做到每次交易都能盈利,即使是巴菲特也做到,我们只需要做到整体盈利就可以了,那么如何做到呢?今天fpmarkets就总结一下成功交易者的…

斑马斑马跳

欢迎来到程序小院 斑马斑马跳 玩法:行走的斑马,点击鼠标左键斑马左右跳动,左右两侧有大树,和移动的小鸟, 撞到大树和小鸟游戏结束,统计分数,快去斑马跳吧^^。开始游戏https://www.ormcc.com/pl…

2024农历新年是什么时候?电脑如何设置农历新年提醒

元旦的钟声已经远去,2024年的阳历新年就这样悄无声息地开始了。但对于我们很多人来说,真正的“过年”氛围,还得等到农历新年的到来。那么,今年的农历新年究竟是什么时候呢?答案是2月10日。 每当想到农历新年&#xff…

浅析进程优先级(上)

什么是进程优先级? 进程优先级:将处理器资源分配给进程的先后顺序 Linux 中每个进程都有相应的优先级 (优先级可能动态改变) 进程优先级决定进程 何时执行 和 获得处理器的时间 进程优先级通常表现为一个整数值 (数值大小决定优先级高低) Linux 中的…