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

</aside>

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

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

网页分析

Untitled

打开网页,随意输入几个单词,发现网页不是静态加载的。不着急,我们换方式,抓包。

Untitled

通过查找,我们在Payload里面发现了输入的需要翻译的信息,比如我这里的“人民”,然后在Preview里面发现了返回的翻译信息,这里我没有上传图片,接着继续看Headers里面的数据,通过观察,会发现网页是post请求,大概的思路就已经出来了,先尝试写一下。

初步代码实现

如果请求携带的参数都已经添加了(如headers,cookies,data等),但仍然报错,建议重新抓取请求。我在这一点上也遇到了相似的问题,后来我换用了“生活”一词作为参数。尝试变换表达方式,寻找意思相近的词语,可能会解决问题。

例如:

  1. 尝试不同的参数名称或者参数值。
  2. 尝试调整请求顺序或请求方法。
  3. 检查服务器响应的信息,可能会提供更多的错误细节。

import requests

translation_url = "<https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule>"
request_headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
    "Cookie": "[email protected]; JSESSIONID=aaaL9cZGnEYP5anryhK2x; OUTFOX_SEARCH_USER_ID_NCOO=624916323.622491; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcbn5lLEK4FC4F7BhK2x; ___rl__test__cookies=1639138497978",
    "Referer": "<https://fanyi.youdao.com>",
    "Content-Length": "252"
}
translation_data = {
    "i": "生活",
    "smartresult": "dict",
    "client": "fanyideskweb",
    "salt": "16391384979865",
    "sign": "b1e30cb6bb14501ea6827a83a554dcae",
    "lts": "1639138497986",
    "bv": "e70edeacd2efbca394a58b9e43a6ed2a",
    "doctype": "json",
    "version": "2.1",
    "keyfrom": "fanyi.web",
    "action": "FY_BY_REALTlME"
}

response = requests.post(translation_url, headers=request_headers, data=translation_data)
print(response.status_code)
print(response.text)

第一步基本上就成功了,看一下返回后的结果:

Untitled

[](data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='1px' height='1px' viewBox='0 0 1 1' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3E%3C/title%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' fill-opacity='0'%3E%3Cg transform='translate(-249.000000, -126.000000)' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

可是当我们想更换一个单词的时候,系统又会报错,比如,我这里换了太阳:

Untitled