(仅供学习参考!!)小黑初次接触爬虫逆向,花了好几天尝试定位到了有道翻译的数据加密逻辑:通过调试启动器请求堆栈,定位有道翻译数据加密入口的最粗鲁方法

本文主要是介绍(仅供学习参考!!)小黑初次接触爬虫逆向,花了好几天尝试定位到了有道翻译的数据加密逻辑:通过调试启动器请求堆栈,定位有道翻译数据加密入口的最粗鲁方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定位翻译发送请求的接口

在这里插入图片描述

寻找动态加密的参数

发现i值和sign值还有mysticTime不同,i值为用户输入的文本,mysticTime小黑猜测可能是时间戳,所以我们要对sign值和mysticTime的加密方式进行破解,得以让接口返回正确的翻译内容
在这里插入图片描述
在这里插入图片描述

定位js加密入口

找到接口对应启动器请求堆栈

在这里插入图片描述

从堆栈底部的发ajex请求部分开始调试

观察代码d.send,得以判断出代码正在向服务器发送请求(加断点后第一次运行到断点并非此接口调用,需要第二次运行即可到达)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
发现r中有sign值,表明其是上一层代码中传进来的,若想破解加密逻辑,需要向顶层调试,于是前往上一层启动器

前往xhr堆栈

在这里插入图片描述
在这里插入图片描述
搜索sign并未搜索到,于是带着怀疑的态度继续向上调试

进入he堆栈

在这里插入图片描述
通过调试传递进来的e参数,发现了仍然有sign,证明了sign的加密仍然在上层堆栈,打消了小黑的怀疑,我们继续向上调试

前往request堆栈

在这里插入图片描述
在这里插入图片描述
依然发现了sign,证明了这里的he还是上层函数中传进来的,继续向上调试

调试request上方匿名堆栈

在这里插入图片描述
仍然发现传递参数有sign值,于是不废话继续向上
在这里插入图片描述

继续向上调试匿名堆栈

在这里插入图片描述
在这里插入图片描述
不说废话,继续向上

继续向上调试匿名堆栈

在这里插入图片描述
在这里插入图片描述

继续向上调试匿名堆栈

在这里插入图片描述

在这里插入图片描述

继续向上调试匿名堆栈

在这里插入图片描述
发现e中的并未有sign值,判断可能是在这一层进行加密的,再一看E(t)返回了sign值,而t中并没有sign值,由此初步判断E函数为加密入口函数
在这里插入图片描述

进入E函数,我的天哪,看到了时间戳和熟悉的加密入口!!!!

在这里插入图片描述

继续深层调试t函数和j函数(就在E函数的上面),发现加密逻辑

在这里插入图片描述

很容易发现sign参数是对mysticTime和t进行整合并使用 MD5的进行digest加密,mysticTime是时间戳字符串,sign加密格式如下:

`client=${u}&mysticTime=${e}&product=${d}&key=${t}`

小黑对t值进行摸索,未发现其构造的代码。。。正当小黑迷茫之时,通过在源代码中搜索,竟然发现其是固定值!!! 因此大功告成!!!!只需要在代码里通过模拟加密构造sign和mysticTime参数即可获得翻译数据。在这里插入图片描述

小黑遇到的困难:调试过程中多个代码段被不同接口多次调用,通过断点调来调去不知道是哪个程序调用的了,使得小黑多次重启程序,通过一次次失败,终于定位到了加密位置。

由于小黑黑对于JS代码的底层部分学习还是不够深入,小黑目前只能摸着石头过河,一步步探索尝试,效率显然比较低。小黑黑后面也要不断学习JS,继续尝试持续进步!!下一期小黑构造加密参数请求,一起加油爱你们呦~

在这里插入图片描述

这篇关于(仅供学习参考!!)小黑初次接触爬虫逆向,花了好几天尝试定位到了有道翻译的数据加密逻辑:通过调试启动器请求堆栈,定位有道翻译数据加密入口的最粗鲁方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657754

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1