📓【js逆向】-有道翻译js逆向实战
00 分钟
2024-7-24
2024-8-1
type
status
date
slug
summary
tags
category
icon
password
😀
今天给大家带来的是【js逆向爬虫】-有道翻译js逆向实战

【js逆向爬虫】-有道翻译js逆向实战

今天给大家带来的是【js逆向爬虫】-有道翻译js逆向实战

网页分析

notion image
打开网页,随意输入几个单词,发现网页不是静态加载的。不着急,我们换方式,抓包。
notion image
通过查找,我们在Payload里面发现了输入的需要翻译的信息,比如我这里的“人民”,然后在Preview里面发现了返回的翻译信息,这里我没有上传图片,接着继续看Headers里面的数据,通过观察,会发现网页是post请求,大概的思路就已经出来了,先尝试写一下。

初步代码实现

如果请求携带的参数都已经添加了(如headers,cookies,data等),但仍然报错,建议重新抓取请求。我在这一点上也遇到了相似的问题,后来我换用了“生活”一词作为参数。尝试变换表达方式,寻找意思相近的词语,可能会解决问题。
例如:
  1. 尝试不同的参数名称或者参数值。
  1. 尝试调整请求顺序或请求方法。
  1. 检查服务器响应的信息,可能会提供更多的错误细节。
第一步基本上就成功了,看一下返回后的结果:
notion image
notion image
可是当我们想更换一个单词的时候,系统又会报错,比如,我这里换了太阳:
notion image
notion image
那怎么办呢?我们开始第二步,也就是js逆向

逆向查找参数

通过对上面的代码进行分析,我们可以发现,"salt"、"sign"、"lts"、"bv"这四个参数的生成方式尚不明确。为了确定这些参数的来源和生成逻辑,我们需要在浏览器开发者工具中打开Initiator下的JavaScript代码,逐一查找和定位相关代码。
notion image
notion image
打开后,按ctrl+f搜索,比如我这里搜索的第一个参数“salt”,这里一共12,通过观察找到这一个:
notion image
notion image
然后,将需要的代码复制到Console中,回车运行以查找生成规律。例如,在我的情况下,salt: i,其生成方式是i = r + parseInt(10 * Math.random(), 10),其中r = "" + (new Date).getTime()。通过在Console中运行这段代码,可以发现parseInt(10 * Math.random(), 10)的意思是随机生成一个0到9的数字;(new Date).getTime()则是获取当前的时间戳。继续观察发现,ts: r,bv: t,而t = n.md5(navigator.appVersion)。在Console中运行后可以得知,t实际上是我们在发起请求时的 "User-Agent"。
notion image
notion image
那么我们开始代码实现:
  • 先搞定ts
可以看到ts也就是上面的r和Payload里面的“lts”已经搞定。
  • 再搞定salt
先来生成parseInt(10 * Math.random(), 10)的随机数:
再来实现i = r + parseInt(10 * Math.random(), 10):
至此,我们已经拿到了三个参数,代码也可以改写一下了:
1、最后搞定sign
通过观察可以发现:
notion image
  1. sign 是通过 n.md5("fanyideskweb" + e + i + "Y2FYu%TNSbMCxc3t2u^XT") 生成的。
  1. 这个值是经过 MD5 加密的。
  1. "fanyideskweb" 是一个固定字符串。
  1. i 的值已经生成。
  1. "Y2FYu%TNSbMCxc3t2u^XT" 也是一个固定字符串。
  1. e 的值目前尚不清楚。
通过断点调试后发现,e就是我们输入的文字。
notion image
最后一步,百度md5怎么加密,这里我感觉是最难的地方,说实话这一块我也不懂,百度的结果如下:

改写代码

成功展示

notion image
上一篇
【零基础学爬虫】爬虫代理介绍
下一篇
某东h5st最新版讲解

评论
Loading...