js逆向实战 -- python实现百度翻译案例

js逆向实战 -- python实现百度翻译案例,第1张

文章目录
    • 一、需求
    • 二、思路分析
    • 三、遇到的问题及解决方法
    • 四、代码分享

一、需求

通过抓取百度翻译的翻译接口,实现中译英

二、思路分析

1.明确目标url

url = "https://fanyi.baidu.com/v2transapi?from=zh&to=en"


2.向目标url发送请求、获取对应的响应

response = requests.post(url, headers=headers, data=form_data)



3.提取翻译的结果

print(response.content.decode())
三、遇到的问题及解决方法

1. bug:“error”:997


solution:可能是百度翻译的反爬措施,需要在headers请求头带上cookie进一步伪装

2. bug:改变翻译内容后(“什么” -> “好的” ),出现"error":998

solution:观察发现,不同翻译内容的sign值不同,且sign无法在element中找到,可能需要通过js逆向解析







3. bug:使用python运行js代码后出现报错
execjs._exceptions.ProgramError: ReferenceError: i is not defined

solution: 找到i,定义i




4. bug:再次运行js代码后出现新的报错
execjs._exceptions.ProgramError: ReferenceError: n is not defined

solution:找到n,定义n



四、代码分享
import re
import requests
import execjs   # 注意这里需要下载第三方库
# pip install PyExecJS -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

data = input("请输入你要翻译的内容:")

with open("baidu_trans.js", "r", encoding="utf-8") as f:
    # 读取js代码
    js_data = f.read()
    # 编译
    js_obj = execjs.compile(js_data)
    # 执行js代码 -- 以字符串的形式传入函数;传参
    sign = js_obj.call("e", data)
    # print(sign)

url = "https://fanyi.baidu.com/v2transapi?from=zh&to=en"

headers = {
    "Referer": "https://fanyi.baidu.com/?aldtype=16047",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
    "Cookie": ""    # 带上你的cookie
}

form_data = {
    "from": "zh",   # 中文
    "to": "en",		# 英文
    "query": data,     # 翻译的内容
    "transtype": "translang",
    "simple_means_flag": "3",
    "sign": sign,	
    "token": "a6063d67d2ad5029a79978ae39b7e8b6",
    "domain": "common"
}
response = requests.post(url, headers=headers, data=form_data)

# 提取数据 -- 使用正则匹配
res = re.findall(r'"dst":"(.*?)"', response.content.decode())[0]   
print("翻译结果:", res)

  • 写在最后:有任何代码问题,欢迎交流~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/904634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存