python调用有道翻译

1、分析url,url没有变
在这里插入图片描述
2、分析参数
shared.ydstatic.com/fanyi/newweb/v1.0.23/scripts/newweb/fanyi.min.js在这里插入图片描述
3、分析加密算法
ts: 13位当前时间戳
salt : 时间戳后面加上100以内的随机数
sign: “fanyideskweb” + 要翻译的字符串 + 时间戳和随机数 + 一个常量,然后对整个字符串进行MD5加密
bv(t):该参数可固定不变(浏览器头进行md5加密)

4、python实现

import requests
import hashlib
import time

# 创建md5对象
def nmd5(str):
    m = hashlib.md5()               #创建一个md5加密算法对象
    m.update(str.encode('utf-8'))   #将str以utf-8编码转换成bytes格式,再存入到m变量中,因为update中只能存入bytes
    str_md5 = m.hexdigest()         #以16进制形式返回加密内容
    return str_md5

def formdata(transtr):
    # 待加密信息
    headerstr = '5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
    bv = nmd5(headerstr)                  #对浏览器头进行MD5加密
    ts = str(round(time.time()*1000))     #time.time()*1000即得13位时间戳,round()函数四舍五入取整,str()将其转化为字符串
    salt = ts + '90'                      #字符串拼接
    strexample = 'fanyideskweb' + transtr + salt + 'n%A-rKaT5fb[Gy?;N5@Tj'
    sign = nmd5(strexample)               #对整个字符串进行MD5加密
    #dict即为Form Data内容
    dict = {'i': transtr, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict',
              'client':'fanyideskweb',
              'salt': salt,
              'sign': sign,
              'ts': ts,
              'bv': bv,
              'doctype': 'json',
              'version': '2.1',
              'keyfrom': 'fanyi.web',
              'action': 'FY_BY_REALTlME'
    }
    return dict

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
#对应Request Headers, 没有Content-Lengt
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
         'Referer':'http://fanyi.youdao.com/',
         'Origin': 'http://fanyi.youdao.com',
         'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
         'X-Requested-With':'XMLHttpRequest',
         'Accept':'application/json, text/javascript, */*; q=0.01',
         'Accept-Encoding':'gzip, deflate',
         'Accept-Language':'zh-CN,zh;q=0.9',
         'Connection': 'keep-alive',
         'Host': 'fanyi.youdao.com',
         'cookie':'OUTFOX_SEARCH_USER_ID=1407777572@10.108.160.17; JSESSIONID=aaaeGGllLoBjPcrhv4i_w; OUTFOX_SEARCH_USER_ID_NCOO=618014238.7284911; ___rl__test__cookies=1578551580505'
}

if __name__ == '__main__':
    input = input("请输入翻译内容:")
    dict = formdata(input)      #调用

    req = requests.post(url, data=dict, headers=header)
    val = req.json()
    print(val['translateResult'][0][0]['tgt'])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值