Python爬虫,破解有道翻译接口参数

前言

刚没事做了一下有道翻译参数的破解,在这大致思路,也算是记录一下吧(要是有什么不对的地方,还请斧正)。此次的目标是网页端的有道翻译。闲话不多说,进入正题(各位看官觉得有用的话欢迎点个喜欢哇)

分析

老规矩,找到数据接口,如图:


Python爬虫,破解有道翻译接口参数_第1张图片
1.png

可以看到,是以POST方式提交的数据,继续,看到DATA部分。


Python爬虫,破解有道翻译接口参数_第2张图片
2.png

看到这里,这些参数除其中i,salt,sign三个参数外,其他在多次翻译时都不会改变。显而易见,i是我们需要翻译的内容。那么salt是什么呢,其实熟练地话能很容易看出来是一个时间戳。可是它为什么命名为salt呢?不由得与下面的sign联想到一起,是不是有py交易呢?sign类似于某个字符加salt的md5值。暂时是推测,接下来验证。

找到发起这一请求的js,格式化后打开。搜索sign这一参数,很幸运,代码没有混淆,没有加密,很规范,这才是人看的代码,哈哈。

Python爬虫,破解有道翻译接口参数_第3张图片
3.png

看到代码,是不是有一种豁然开朗的感觉,把其中的关键代码截取出来:

u = "fanyideskweb"
c = i.deEight("rY0D^0'nM0}g5Mm1z%1G4"),
var g = n.md5(u + d + f + c);
/*sign是u+d+f+c的md5值
d 即待翻译的内容
f是时间戳
c, u是固定的字符串
*/

e("/output/output").translate({
            i: d,
            from: s,
            to: l,
            smartresult: "dict",
            client: u,
            salt: f,
            sign: g,
            doctype: "json",
            version: "2.1",
            keyfrom: "fanyi.web",
            action: t,
            typoResult: !0
        })

至此,所有的关键参数已经被分析出来了,接下来就是Python的代码实现了,同样,只写关键代码(我懒,每次都是大晚上的码字- -)

'''
  Created by Chen
'''
import hashlib
import time

def createData(transStr):
    '''
    待翻译的内容
    :param transStr: 
    :return: dict
    '''
    salt = str(int(time.time()*1000))
    client = 'fanyideskweb'
    a = "rY0D^0'nM0}g5Mm1z%1G4"
    md5 = hashlib.md5()
    digStr = client+transStr+salt+a
    md5.update(digStr)
    sign = md5.hexdigest()

    data = {
        'i': transStr ,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': salt,
        'sign': sign,
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_CL1CKBUTTON',
        'typoResult': 'true'
    }
    return data

你可能感兴趣的:(Python爬虫,破解有道翻译接口参数)