Python调用有道词典翻译
分析
有道翻译官网
翻译按钮
点击翻译按钮,查看网络请求,如图
共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下:
如图所示,我们真正关注的是请求参数,在这么多的参数当中,其中,i
是需要翻译的词语,通过对多个翻译请求分析知道,from
是翻译原文语言,to
是翻译的目标语言,剩下的除了salt
,sign
之外的都是固定的,因此,现在问题是salt
,sign
是怎么来的
前端代码
通过前端的断点分析,找到发送网络请求的代码,具体如下:
显然,salt
是一个时间戳加上随机数得到"" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))
,sign
是一个md5加密的字符串,显然,只有模拟出这两个参数就可以了
代码
# -*- coding: UTF-8 -*-
import hashlib
import random
import requests
import time
s = requests.Session()
m = hashlib.md5()
class Dict:
def __init__(self):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
'Referer': 'http://fanyi.youdao.com/',
'contentType': 'application/x-www-form-urlencoded; charset=UTF-8'
}
self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom='
self.base_config()
def base_config(self):
"""
设置基本的参数,cookie
"""
s.get('http://fanyi.youdao.com/')
def translate(self):
i = '你好'
salf = str(int(time.time() * 1000) + random.randint(0, 9))
n = 'fanyideskweb' + i + salf + "rY0D^0'nM0}g5Mm1z%1G4"
m.update(n.encode('utf-8'))
sign = m.hexdigest()
data = {
'i': i,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salf,
'sign': sign,
'doctype': 'json',
'version': "2.1",
'keyfrom': "fanyi.web",
'action': "FY_BY_DEFAULT",
'typoResult': 'false'
}
resp = s.post(self.url, headers=self.headers, data=data)
return resp.json()
dic = Dict()
resp = dic.translate()
print(resp)
项目地址: 基于Python的爬虫
QQ交流群: 173318043
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。