Python 调用有道翻译接口实现翻译
最近为了熟悉一下js用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同。
首先来看一下网页post过去的数据
找到这个js文件,最上面这个send文件
将里面的js代码拷贝出来,格式化一下,搜索sign
vart=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
多尝试几次,大家会发现,不同的请求内容,前面两个是不会发生改变的,而第三个,结合我们之前的经验,是不是很像一个时间戳;既然有猜测,咱们就又来尝试一下,自己构造一个Cookiepost过去,万事大吉,哈哈哈哈。
最后附上我的代码
#/usr/bin/python
#encoding:utf-8
#__Author__=Slwhy
importrequests
importtime
importrandom
importhashlib
#i=""+((newDate).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("pleaseinputthewordyouwanttotranslate:")
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:number
from:AUTO
to:AUTO
smartresult:dict
client:fanyideskweb
salt:1515462554510
sign:32ea4a33c063d174a069959a5df1a115
doctype:json
version:2.1
keyfrom:fanyi.web
action:FY_BY_REALTIME
typoResult: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;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.108Safari/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()
#printdata
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
p=s.post(url,data=data,headers=head)
printp.text
到此这篇关于Python调用有道翻译接口实现翻译的文章就介绍到这了,更多相关Python有道翻译内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。