Python 调用有道的翻译接口

最近为了熟悉一下 js 用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同。

  • 首先来看一下网页 post 过去的数据

    这里写图片描述
    data
    大家不难发现,我们翻译的内容是放在 post 的 data 中的,这些参数,除了 salt 和 sign 要么就是不会变化,要么就是一眼能看出来意义的;那么这个 salt 和 sign 是什么呢?salt 根据 ta 数据的特征,我们应该会想到,这应该是一个时间戳,而 sign 又是什么呢?我们一起来看一下

  • 找到这个 js 文件,最上面这个 send 文件
    这里写图片描述

  • 将里面的 js 代码拷贝出来,格式化一下,搜索 sign
    这里写图片描述
    我们发现,salt 确实是一个时间戳,但 sign 呢?,这里对 sign 的计算稍微多啰嗦几句,如图:
    这里写图片描述
    大家发现 sign 的值,也就是 o 一共是对四个参数进行求 md5 码,两个是定值,一个是前面求到的时间戳,还有一个是什么呢?这个地方我也找了挺久的(还是不懂 js 的痛啊,哭。。。)剩下的参数,就是图片中所谓的 t

    var t = e.i

    然后在 data 中,大家还能发现这么一句:

    i:e.i

    这个 i 我们对应到 ta 发送的 data 中,不就是我们要翻译的字符串吗?哈哈哈,被我发现了吧!

  • 发现这个就好办了,我们找出其中参数之间的关系,用Python实现 ta
    这里写图片描述

  • 但当我们构造好 data 兴高采烈地将数据 post 过去的时候,会发现出现报错了
    这里写图片描述

  • 为什么呢?难道是我们的 data 构造的有问题吗?不清楚,先尝试一下,咱们吧浏览器中的 data 拷贝进来运行一下,发现还是出错了;那么说明错误不是出在 data 上面了,那究竟是那里出了问题呢?难道 ta 还有其他的校验方式;别着急继续分析,我们再观察一下,post 请求,发现这个请求是带了 cookie的,于是我们猜测,是不是 cookie 的原因呢? 还是不清楚,我们尝试一下,将 data 对应的 cookie 加上,再运行一下。发现这次通过了,我们的猜测没错,确实是 cookie 的原因,那么这个 cookie 又是怎么来的呢?

  • Cookie
    这里写图片描述
    多尝试几次,大家会发现,不同的请求内容,前面两个是不会发生改变的,而第三个,结合我们之前的经验,是不是很像一个时间戳;既然有猜测,咱们就又来尝试一下,自己构造一个 Cookie post 过去,万事大吉,哈哈哈哈。

  • 最后附上我的代码

#/usr/bin/python 
# encoding:utf-8
# __Author__ = Slwhyimport requests
import time
import random
import hashlib
#i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))
i = str(int(time.time()*1000)+random.randint(1,10))
#o = n.md5("fanyideskweb" + t + i + "aNPG!!u6sesA>hBAW1@(-");
t = raw_input("please input the word you want to translate:")
u = 'fanyideskweb'
l = 'aNPG!!u6sesA>hBAW1@(-'
src = u + t + i + l    # u 与 l 是固定字符串,t是你要翻译的字符串,i是之前的时间戳
m2 = hashlib.md5()
m2.update(src)
str_sent = m2.hexdigest()''' i:numberfrom:AUTOto:AUTOsmartresult:dictclient:fanyideskwebsalt:1515462554510sign:32ea4a33c063d174a069959a5df1a115doctype:jsonversion:2.1keyfrom:fanyi.webaction:FY_BY_REALTIMEtypoResult:false
'''
head = {'Accept':'application/json, text/javascript, */*; q=0.01','Accept-Encoding':'gzip, deflate','Accept-Language':'zh-CN,zh;q=0.9','Content-Length':'200','Connection':'keep-alive','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','Host':'fanyi.youdao.com','Origin':'http://fanyi.youdao.com','Referer':'http://fanyi.youdao.com/','User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36','X-Requested-With':'XMLHttpRequest',# 'Cookie': 'YOUDAO_MOBILE_ACCESS_TYPE=1; OUTFOX_SEARCH_USER_ID=833904829@10.169.0.84; OUTFOX_SEARCH_USER_ID_NCOO=1846816080.1245883; fanyi-ad-id=39535; fanyi-ad-closed=1; JSESSIONID=aaaYuYbMKHEJQ7Hanizdw; ___rl__test__cookies=1515471316884'
}
head['Cookie'] = 'OUTFOX_SEARCH_USER_ID=833904829@10.169.0.84; OUTFOX_SEARCH_USER_ID_NCOO=1846816080.1245883;  ___rl__test__cookies='+str(time.time()*1000)# '___rl__test__cookies=1515471316884'data = {'i': t,'from':'AUTO','to':'AUTO','smartresult':'dict','client':'fanyideskweb','salt':i,'sign':str_sent,'doctype':'json','version':'2.1','keyfrom':'fanyi.web','action':'FY_BY_REALTIME','typoResult':'false'
}s = requests.session()
# print data
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
p = s.post(url,data= data,headers = head)
print p.text

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/57759.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python打造一个中英互译软件(基于有道翻译)

(本博客简洁明了,适合小白入门) 首先明确整体构架: 1.爬虫部分 2.界面部分 3.打包 涵盖的库: import urllib.request import urllib.parse import json import tkinter as tk import tkinter.messagebox 先确定爬…

ubuntu最好用的划词翻译词典:有道词典和GoldenDict

目录 1、安装有到词典 2、安装GoldenDict 3、GoldenDict的一些简单配置以及相关bug修改 用惯了Windows下的有道词典,其划词翻译功能用起来令人极其舒适~Ubuntu系统中也有有道词典以及一个类似的类似的软件GoldenDict,下面就分别介绍下这两…

有道翻译接口 破解

有道翻译 API 最近有些任务需要将中文翻译成英文,由于个人英文水平问题,每次都要打开好几个在线翻译网页,一句一句的丢进去,取最佳者为所用,甚是麻烦。 任务完成之后,就稍微研究了一下各个翻译接口&#…

对接有道翻译api中英翻译软件

中译英翻译软件对接了有道翻译API的翻译数据接口,通过数据接口,我们可以获得文本的批量翻译并对我们的译后文本进行内容自动编辑,通过调用有道翻译API数据接口,我们可以在我们的中译英翻译软件中更灵活地对我们的文本进行翻译处理…

百度、阿里、腾讯、有道各平台翻译API申请教程

文章目录 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名百度翻译申请腾讯翻译申请阿里翻译申请有道翻译申请 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名 快捷 一键转换为英文,并生成多种命名风格支持多平台翻译服务配置(谷歌、腾…

塔望 · ​食界​人物|红牛饮料背后的两个企业家

关注行业,更要关注行业发展背后的人。关注企业,更要关注企业的人格化身——“企业家”。人类在任何领域的创新和进步,都离不开企业家精神。优秀的企业家和企业家精神,是经济社会发展的重要推动力。 本期塔望【​食界​人物】将带…

正则表达式爬取红牛分公司数据

正则表达式还是很好玩的,爬取红牛官网分公司信息 import requests import re import pandas as pd response requests.get(url"http://www.redbull.com.cn/about/branch") company re.findall(<h2>(.*?)</h2>, response.text) add re.findall("…

列表表达式爬取红牛分公司数据

列表达式爬取红牛官网分公司信息 import requests import pandas as pd import bs4 response requests.get("http://www.redbull.com.cn/about/branch") main_page bs4.BeautifulSoup(response.text,"html.parser") company [i.text for i in main_pag…

红牛商标所有者泰国天丝集团将投资逾10亿元深化在华布局

全球红牛品牌及“红牛”商标的创始者和所有者 -- 泰国天丝集团宣布&#xff0c;未来三年将对其在华业务进行一系列投资&#xff0c;总额高达10.6亿人民币。具体包括深化在华合作伙伴战略关系、在中国设立新的代表处、组建国内团队、扩建新的生产基地以及推出集团旗下更多新产品…

从红牛案看商业伦理和社会公义中的众生相

一出与生恩、养恩有关的大戏&#xff0c;正在中国商业界上演。 “儿子”是红牛&#xff0c;一方是在养育红牛的华彬集团&#xff0c;一方是生育红牛的泰国天丝&#xff0c;自2016年以来&#xff0c;双方数次诉讼、数次论战&#xff0c;严重冲击了市场秩序的稳定繁荣。 对于生…

java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...

导语 《Java面向对象程序设计实验指导与习题解答》是《Java面向对象程序设计》(作者耿祥义,清华大学出版社出版,2010)的配套实验指导和习题解答,目的是通过一系列实验练习使学生巩固所学的知识。本书由16个实验组成,每个实验由6个主要部分构成。本书由耿祥义、张跃平编著。…

红牛开发板模拟器简要说明_V1.0

文档名称 红牛开发板模拟器简要说明_V1.0 版本 1.0 作者 叶帆 日期 2011-2-27 历史 文档列表 http://www.sky-walker.com.cn/MFRelease/YF_document_list.pdf 1、前言 .NET Micro Framwork 除了简单易于开发外&#xff0c;还有一个比较有用的功能&#xff0c;那就是…

zte android截屏快捷键,中兴红牛V5手机怎么截屏 中兴红牛V5截图技巧图解

中兴红牛V5手机截屏怎么截的呢&#xff0c;对于刚开始用智能机的我来说&#xff0c;是一个不小的尝试&#xff0c;包括我刚知道的候一样&#xff0c;下面由本小编教大家怎么使用中兴红牛手机截屏和截图的技巧。操作步骤如下&#xff1a; 红牛V5怎么截屏 中兴红牛V5截图技巧 [中…

我有故事,你有红牛吗?

前言 不经意留意到CSDN官方的活动1024有奖征文|我和CSDN的故事 &#xff0c;CSDN提供了一个帮助自己成长的平台&#xff0c;所以决定写一篇文章真诚的感谢CSDN&#xff0c;当然了我肯定不会为了那小小的奖品而折腰的&#xff0c;不就是个衣服嘛&#xff0c;不就是个会员嘛&…

AutoGPT保姆级使用教程

1. 介绍 Auto-GPT是一个基于ChatGPT的工具&#xff0c;他能帮你自动完成各种任务&#xff0c;比如写代码、写报告、做调研等等。使用它时&#xff0c;你只需要告诉他要扮演的角色和要实现的目标&#xff0c;然后他就会利用ChatGPT和谷歌搜索等工具&#xff0c;不断“思考”如何…

谷歌高级软件工程师的一天

作者 | Dimitris Leventeas 译者 | 弯月 原文链接&#xff1a;https://dimle.wordpress.com/2022/04/24/my-typical-working-day-as-software-engineer/ 本文为 CSDN 翻译&#xff0c;未经授权&#xff0c;禁止转载 我的工作 我有一个文档&#xff0c;专门记录待完成的任…

如何下载一篇文献的所有被引文献(傻瓜式操作,亲测可行,方便快捷,需要教育账号)

最近学习一篇文献时&#xff0c;需要查看所有引用过这篇文献的文章&#xff0c;并且下载出来。当然&#xff0c;如果引用的文献较少的话&#xff0c;可以通过网页直接搜索下载下来。但是如果超过10篇以上&#xff0c;我就会感觉比较繁琐。那么&#xff0c;有没有什么方法可以一…

如何在Springer使用bibtex自动生成引用文献,而不写Bibitem

最近投稿过程中帮忙排版&#xff0c;然后发现Springer的模板只能用Bibitem, 网上有许多馊主意&#xff0c; 例如手动写Bibitem&#xff0c;例如引用一些无用的包&#xff0c;尝试了几个小时&#xff0c;都没有用。 最后在英文论坛发现了这个秘密&#xff0c; Referee Link:具…

还在为写综述发愁找不到文献吗?学术搜索semantic scholar你值得拥有

首先&#xff0c;附上搜索网址&#xff1a; https://www.semanticscholar.org/ 目录 1.介绍2.官网样子什么样3.特色功能3.1 被引用情况分类3.2 学者影响力评价 1.介绍 官网介绍到 We are a team of researchers and engineers at the Allen Institute for AI building a bette…

bibtex到bibitem的转换的超详细教程(获取参考文献的bibitem)

1、获取引用论文的BibTex 这里以谷歌学术为例&#xff0c;搜索论文’Faster r-cnn: Towards real-time object detection with region proposal networks‘。如下图所示&#xff1a; 点击引用符号&#xff0c;出现以下页面。 点击BibTex&#xff0c;会跳转出该论文的BibTeX。如…