| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 爬虫模拟对“有道在线翻译”发送请求(请求中的数据含需分析js来解出变化数据) -> 正文阅读 |
|
[JavaScript知识库]爬虫模拟对“有道在线翻译”发送请求(请求中的数据含需分析js来解出变化数据) |
每日分享: 做好自己 世界上没有一份工作不辛苦,也没有一处人事不复杂,无论你当下正在经历什么,都要调整好心态,继续前行,继续努力! 总有人嫌你不够好,也总有人觉得你哪里都好,爱你的人自然会爱你,不爱你的人做再多也是错。 在长大、在失去、在努力、在接受、在好好生活。 不会js也可以解出来!!!
一、分析js构建data数据(主要讲解)1. 在隐身窗口或无痕模式登录有道在线翻译:https://fanyi.youdao.com/ 2. 抓包 -> 输入要翻译的句子 3. 再新建一个隐身窗口执行步骤2,找到translate包,观察两次的Form Data有什么不同: ? ? ?可以看到,表单中的 salt、sign、lts 这三个数据是变化的 4. 找到对应的js文件: 可以看到,js文件是同一个文件(后面的数字代表位置是在多少行) ,随意打开一个就行 5. 找一个Form Data中比较特殊的词,例如:smartresult(不要找像第一个数据 i ,因为 i 很可能会在js代码中出现很多次),之后直接在js代码中查找(Ctrl+f),找到如下代码: 很明显可以看出,它就是js中构建Form Data的部分代码,我们可以根据它来分析?salt、sign、lts 这三个数据是如何得到的 6. 观察这三个数据,可以发现,它们都与 r 有关: ?7. 之后就找 r 是什么,往上滑可以看到如下代码: 所以,r 肯定与generateSaltSign这个函数有关 8. 通过查找(Ctrl+f)generateSaltSign这个关键词,可以找到generateSaltSign函数是怎么来的(其他的地方都是调用这个函数): ?9. 我们可以发现,这行代码是把 r 的值给了generateSaltSign函数,那么说明,在这个大括号里(这一块代码)肯定有 r 的值,因此就在大括号中找 r 即可: 可以看出,划线代码就是 r 的定义 10.? 可以在 r 的定义中找到?salt、sign、lts 这三个变化参数的来源: lts:其实lts就是代码中的ts: ?看lts的值:1638699280543,看到这一串数字要想到“时间戳”(也就是时间) ts的值是 r 的值,而 r = "" + (new Date).getTime(),没学过js看不懂也没关系,我们可以复制这个语句:(new Date).getTime(),在如下图输入js代码: ? ?如上就是得到的结果,可以推断出,这行代码的作用就是获得时间戳;ts就是把时间戳变成了字符串类型,ts与lts数字的个数也一致,可以推断它们是一样的。 salt:细心的小伙伴可以发现,salt比lts就多了一位数字 salt的值就是 i 而 i =?r + parseInt(10 * Math.random(), 10);其中r是时间戳,后面代码又看不懂了,继续在Console中多次输入parseInt(10 * Math.random(), 10): 多次输入后你会发现,它是产生一个0-9的int型数据(没有10),也就是说salt的值就是lts的值后面加上了一个随机数 sign:首先可以看出它是十六进制 sign =?n.md5("fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT") 先说一下该表达式中的e: 我们可以想一下,什么东西这么重要,使js代码中特别多的参数都是e,当然就是要翻译的词/句子了。 解析sign就需要我们知道python了,python中的hashlib模块中有md5方法 这两个是最常见的方法 下面通过代码,来了解md5:
?结果: 在数据不是特别特别特别......大的时候,一个data对应一个md5后的值,一般不会出现重复 到此为止,Form Data 里面的值就都解决了,接下来写代码即可 二、源码
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:32:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |