通过参数的破解,Python实现有道翻译的实时调用。有道翻译大家都知道,算是国内翻译比较好的平台了。我们做SEO的时候,在已经伪原创的时候肯定是经常会用到中英互换的方式去实现文章。也就是之前市面上说的AI伪原创了。那么有道翻译整体是提供了一个api的接口,提供企业和个人的调用的。那么作为资深的白嫖党,肯定是不愿意掏这个钱。虽然Steven去官网看了这个api的价格,也不算贵。

但是这个不能说我们不能白嫖,我们知道有道的网页是可以免费的提供翻译的,不收费,那么我们就可以通过提供网页信息来获取我们需要的翻译的数据。那么就可以实现白嫖的行为了!

有道翻译的实时调用脚本实现原理

有道的官网网页上面是直接可以免费的翻译,那么也就是存在免费的翻译接口,而且不限次数,所以我们可以通过获取网页的响应数据来获取我们需要的内容。

有道翻译的实时调用参数破解
1、通过网页的调式工具,可以看出,网站通过post请求的,并且data数据包中,包含了一些变量是加密的。我们只要破解加密的参数就可以获取到想要的数据。

python 新版有道翻译 python调用有道翻译_python

2、具体的一些变量是:i、salt、sign、ts、bv 第一个变量是搜索翻译的字符串,加密的变量是后四位。

python 新版有道翻译 python调用有道翻译_ide_02

3、通过断点调试后,发现了几个变量的构造

python 新版有道翻译 python调用有道翻译_接口_03

ts:当前13位时间戳

salt:当前13位时间戳 + 0~9的一个随机值

bv:浏览器内核的版本信息的md5值

sign: “fanyideskweb” + 搜索词 + salt + “mmbP%A-r6U3Nw(n]BjuEU” 的md5值

知道了这些加密参数后,写代码就比较简单了!

有道翻译的实时调用脚本代码

Python

# coding:utf-8
import requests,random,time
from hashlib import md5



query = '搜索词'



def youdaoFanyi(query):
    url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4185.0 Safari/537.36'
    ts = int(time.time() * 1000)
    salt = ts + random.randint(0,9)
    bv = md5(ua.replace('Mozilla/','').encode(encoding='utf-8')).hexdigest()
    action = random.choice(['FY_BY_CLICKBUTTION','FY_BY_REALTlME'])
    sign = "fanyideskweb" + query + str(salt) + "mmbP%A-r6U3Nw(n]BjuEU"
    sign_md5 = md5(sign.encode(encoding='utf-8')).hexdigest()
    headers = {
        "Accept": "application/json, text/javascript, */*; q=0.01",
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Cookie': 'OUTFOX_SEARCH_USER_ID=1802626059@10.169.0.84; JSESSIONID=aaa2BxnbAE2hz4GjvR7lx; OUTFOX_SEARCH_USER_ID_NCOO=2045615435.9428613; ___rl__test__cookies={time}'.format(time=ts),
        'Host': 'fanyi.youdao.com',
        'Origin': 'http://fanyi.youdao.com',
        'Referer': 'http://fanyi.youdao.com/',
        'User-Agent': ua,
        'X-Requested-With': 'XMLHttpRequest'
    }
    form_data = {
        'i': query,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': str(salt), #r + parseInt(10 * Math.random(), 10); ts + 随机值
        'sign': sign_md5, #md5("fanyideskweb" + action + salt + "mmbP%A-r6U3Nw(n]BjuEU")
        'ts': str(ts) , #空格 ‘’ + 时间戳
        'bv': bv, #md5(navigator.appVersion) 浏览器的agent MD5
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': action
    }

    response = requests.post(url,data=form_data,headers=headers)
    result = response.json()
    print(result)
    print('\n')
    fanyi = result['translateResult'][0]
    print(fanyi)
    print('\n')
    try:
        for line in fanyi:
            tgt = line['tgt']
            print(tgt)

    except:
        pass


if __name__ == '__main__':
    youdaoFanyi(query)
    # print(query)

效果图

python 新版有道翻译 python调用有道翻译_ide_04

Ps:当然了,其实这个只能说是一个小小的demo了,没有完完整整的优化好。这个是昨天,我乘兴晚上研究出来的,然后百度了一下。我的心态就崩了,原来早就有人研究出来,有人在网上已经公布了。。。唉。。。早知道就直接抄网上的不就完事了。。。。