初期操作

​打开有道翻译界面—F12—Network—在翻译框中输入'hello'—在Network下面发现名为'translate_o?smartresult......'返回翻译之后的数据

分析参数

把所有的Request Headers、params都写上尝试爬虫,可以得到结果。

​然后Request Headers中Headers、Host、Origin、Referer三项留下,Cookie一项经尝试只有 OUTFOX_SEARCH_USER_ID=-1927650476@223.97.13.65;会验证而且尝试多次之后我这里是没有变化的。

Accept: application/json, text/javascript, */*; q=0.01

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Connection: keep-alive

Content-Length: 252

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

Cookie: OUTFOX_SEARCH_USER_ID=-1927650476@223.97.13.65; OUTFOX_SEARCH_USER_ID_NCOO=1897197670.972445; JSESSIONID=aaalvPunK-sv2fyR-UjEx; ___rl__test__cookies=1612924426799

Host: fanyi.youdao.com

Origin: http://fanyi.youdao.com

Referer: http://fanyi.youdao.com/

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36

X-Requested-With: XMLHttpRequest

再就是params参数,变化的是salt、sign、lts,尝试后发现lts可有可无,所以变化的只有salt、sign两项。

i: 你好

from: AUTO

to: AUTO

smartresult: dict

client: fanyideskweb

salt: 16129244361391

sign: 2820759b6e54f25e0aa94e185e2265e3

lts: 1612924436139

bv: 3da01a09873456cfb5dba05f2124b148

doctype: json

version: 2.1

keyfrom: fanyi.web

action: FY_BY_REALTlME

分析salt、sign

全局搜索sign,结果中有fanyi.min.js文件,双击进入,然后右键选择'Open in Source panel',搜索'sign',找到如下代码:

define("newweb/common/service", ["./utils", "./md5", "./jquery-1.7"], function(e, t) {

var n = e("./jquery-1.7");

e("./utils");

e("./md5");

var r = function(e) {

var t = n.md5(navigator.appVersion)

, r = "" + (new Date).getTime()

, i = r + parseInt(10 * Math.random(), 10);

return {

ts: r,

bv: t,

salt: i,

sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@")

}

};

​可以看出salt是13位时间戳加了一个10以内的随机数,而sign是'固定字符串+e+i+固定字符串',其中i就是salt,而e经过断点调试(我选择在var t = n.md5(navigator.appVersion)这一行加断点,然后输入你好,会出现e='你好')可以得知e为我们要翻译的字符串。这样整个分析过程就结束了。

​之后通过爬虫可以得到我们想要的数据,因为返回的是json数据,我们使用.json()来获得返回值更加方便。

Python代码

import hashlib

import random

import time

import requests

def get_data():

r = str(round(time.time() * 1000))

salt = r + str(random.randint(0, 9))

content = '你好'

data = "fanyideskweb" + content + salt + "Tbh5E8=q6U3EXe+&L[4c@"

sign = hashlib.md5()

sign.update(data.encode("utf-8"))

sign = sign.hexdigest()

# print(len(sign))

# print(sign)

return content, salt, sign

def send_request(content, salt, sign):

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

headers = {

'Cookie': 'OUTFOX_SEARCH_USER_ID=-1927650476@223.97.13.65;',

'Host': 'fanyi.youdao.com',

'Origin': 'http://fanyi.youdao.com',

'Referer': 'http://fanyi.youdao.com/',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',

}

data = {

'i': str(content),

'from': 'AUTO',

'to': 'AUTO',

'smartresult': 'dict',

'client': 'fanyideskweb',

'salt': str(salt),

'sign': str(sign),

# 'lts': '1612879546052',

# 'bv': '6a1ac4a5cc37a3de2c535a36eda9e149',

# 'doctype': 'json',

'version': '2.1',

'keyfrom': 'fanyi.web',

'action': 'FY_BY_REALTlME',

}

res = requests.post(url=url, headers=headers, data=data).json()

print('翻译后:', res['translateResult'][0][0]['tgt'])

print('翻译前:', res['translateResult'][0][0]['src'])

if __name__ == '__main__':

content, salt, sign = get_data()

send_request(content, salt, sign)

运行效果

以上就是python 实现有道翻译的详细内容,更多关于python 有道翻译的资料请关注脚本之家其它相关文章!

python 有道翻译,python 实现有道翻译功能相关推荐

  1. php 获取有道翻译,python爬虫 身边的翻译专家——获取有道翻译结果

    [导读]有道翻译可以直接翻译内容,观察它的网页内容以及URL可以发现,它的基本url 和将要翻译的内容... 本文目的:使用python 实现翻译效果 思路:有道翻译可以直接翻译内容,观察它的网页内容 ...

  2. python微信公众号翻译功能_使用python在SAE上搭建一个微信应用,使用有道翻译的api进行在线翻译...

    1. 准备,先在使用python一步一步搭建微信公众平台(一)中基本实现自动回复的功能后,接着在有道词典上申请一个key,http://fanyi.youdao.com/openapi?path=da ...

  3. 使用Python实现基于API的网易有道翻译功能

    使用Python实现基于API的网易有道翻译功能 1.打开有道翻译页面 2.在浏览器页面左键-检查-Network 3.进行翻译的操作,右键下面红色部分,Copy link address 粘贴出来为 ...

  4. Python爬虫:js加密实例-有道翻译

    此项目,参考别人的教程,自己摸索了一下,将结果展示出来,以供后人参考 实现功能: 通过requests请求有道翻译的接口,返回翻译结果,并封装成函数使用 有道翻译地址:http://fanyi.you ...

  5. python爬虫实战之爬取有道翻译

    文章目录 介绍 网页分析 代码实战 当我们学习python爬虫时我们需要做大量的练习,往后我会发布更多的python爬虫练习实战代码,进一步剖析爬虫的每一个细节 介绍 本次爬取的是有道翻译,利用pyt ...

  6. 超简单爬虫使用requests模块+有道云翻译,python实现翻译小功能

    前言 最近隔壁小张找到我 "老王,最近我在学英语,不想想再打开网页翻译了,太麻烦了一直要开着网页" "那你可以下载客户端吗,不是挺方便的嘛?" "老王 ...

  7. 再见所有的翻译工具!我使用了有道云+Python开发一个批量文档翻译工具!

    一.需求分析 需求: 最近有个任务,需要对一批文件进行汉译英的翻译 刚开始想着挺简单的呀,那就直接复制到翻译软件中,在复制出来呗. 有很多办法可以实现翻译: 可以使用谷歌翻译,这个完全免费的.但是不好 ...

  8. python api接口调用_python 调用有道api接口的方法

    初学者学习python,研究了几天之后,我写了一个python程序调用有道api接口.效果如下图所示:声明:代码仅仅是像我这样的初学者学习和交流.应用程序非常简单.PS:评审不需要时间,请不要滥用!! ...

  9. 52道常见Python面试题,你都能答对吗?

    52道常见Python面试题,你都能答对吗? 最近有很多人找小编询问python求职面试的一些情况,python岗位众多,面试官的个性也千人千面,其实是没有固定的套路的.还是一句老话,要成功拿下一个重 ...

  10. python修炼之道_Pythonic:Python 修炼之道

    Pythonic:Python 修炼之道 金海飞 百度高级研发工程师 负责百度智能运维产品 (Noah) 基础组件的设计研发工作, 在程序部署, 数据传输方面有广泛的实践经验. 干货概览 作为一个码农 ...

最新文章

  1. 【笔记】js Function类型 内部方法callee
  2. autofac文档:服务类型,名称和键
  3. windows卸载程序提示“请等待当前程序完成卸载或更改“问题解决方法,windows卸载卡进程问题解决方法
  4. Python中的条件语句和循环语句
  5. python to sql_python的to_sql那点儿事
  6. 关于布地奈德的副作用
  7. The ntpath module
  8. 前端学习(2966):登录页面的制作
  9. php 生存分析,HPA数据库08.做生存分析
  10. 头像上传html js版,javascript头像上传代码实例
  11. html 文字悬停翻转,html5+TweenMax.js鼠标悬停文字翻转动画特效
  12. 全网疯传!传智播客java基础入门第二版pdf
  13. 工业4.0智能电批扭力输出异常问题
  14. 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
  15. [HITS算法]Authoritative Sources in a Hyperlinked Environment
  16. PDF可以修改吗,如何在PDF上修改文字
  17. 新浪财经独家对话达利欧:桥水员工离职率曾高达30%
  18. 基于微信小程序做直播的截图(微信小程序发起视频直播)
  19. 实验一 熟悉常用的Linux操作和Hadoop操作
  20. 广州软博前端实习生面经

热门文章

  1. 单片机通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB
  2. gmp新附录 计算机系统,GMP新附录:计算机系统.doc
  3. java方法重载[详解]
  4. Oracle 计算时间差
  5. 控制台出现 Page “xxx“ has not been registered yet 和 uniapp的报错Uncaught Error: Module build fail xxx
  6. C# 写XML格式的字符串 (是否保存到硬盘)
  7. ICLR 2022 | 合作博弈新范式:为可解释性等机器学习估值问题提供新方法
  8. python风格迁移_图像风格迁移实战(附Python实战)
  9. 职称计算机word中文字处理,职称计算机考试:Word97中文字处理
  10. Java常量池详解:字符串常量池、Class常量池、运行时常量池 三者关系