有道翻译网站:https://fanyi.youdao.com/
通过有道翻译的接口,代码实现翻译功能
# coding:utf-8
import requests
import time
import random
from hashlib import md5
from fake_useragent import UserAgent
class YouDao:
def __init__(self):
self.ua = UserAgent(use_cache_server=False).random # 生成一个随机User-Agent
self.get_url = ‘https://fanyi.youdao.com/‘
self.post_url = ‘https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule‘
self.headers = {
‘Referer‘: self.get_url,
‘User-Agent‘: self.ua
}
self.sess = requests.session()
def start(self):
# 通过session发送请求,会获得cookie,再次发送请求时会携带上
self.sess.get(url=self.get_url, headers={‘User-Agent‘: self.ua})
while True:
i = input(‘请输入需要翻译的内容(q退出):‘)
if i == ‘q‘:
self.sess.close()
break
# js逆向
lts = str(int(time.time() * 1000)) # 时间戳*1000的整数部分字符串
bv = md5(self.headers[‘User-Agent‘].partition(‘/‘)[-1].encode()).hexdigest() # md5加密的浏览器版本
salt = lts + str(random.randint(0, 9)) # lts后面添上一个0-9的随机整数
sign = md5((‘fanyideskweb‘ + i + salt + ‘Tbh5E8=q6U3EXe+&L[4c@‘).encode()).hexdigest() # md5加密的签名
form_data = {
‘i‘: i, # 需要翻译的内容
‘from‘: ‘AUTO‘,
‘to‘: ‘AUTO‘,
‘smartresult‘: ‘dict‘,
‘client‘: ‘fanyideskweb‘,
‘salt‘: salt,
‘sign‘: sign,
‘lts‘: lts,
‘bv‘: bv,
‘doctype‘: ‘json‘,
‘version‘: ‘2.1‘,
‘keyfrom‘: ‘fanyi.web‘,
‘action‘: ‘FY_BY_REALTlME‘
}
result = self.sess.post(url=self.post_url, headers=self.headers, data=form_data).json()[‘translateResult‘][0][0][‘tgt‘]
print(‘翻译结果:%s‘%result)
if __name__ == ‘__main__‘:
YouDao().start()
请输入需要翻译的内容(q退出):中国
翻译结果:China
请输入需要翻译的内容(q退出):hello
翻译结果:你好
请输入需要翻译的内容(q退出):q
Process finished with exit code 0
原文:https://www.cnblogs.com/eliwang/p/14854425.html