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

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

定位翻译发送请求的接口

在这里插入图片描述

寻找动态加密的参数

发现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

相关文章

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下