Python调用有道词典翻译

Python调用有道词典翻译

分析

有道翻译官网

图片描述

翻译按钮

点击翻译按钮,查看网络请求,如图
图片描述
共有四个网络请求,通过分析,查看返回的信息,显然第一个是真正的翻译请求,具体信息如下:
图片描述
如图所示,我们真正关注的是请求参数,在这么多的参数当中,其中,i是需要翻译的词语,通过对多个翻译请求分析知道,from是翻译原文语言,to是翻译的目标语言,剩下的除了saltsign之外的都是固定的,因此,现在问题是saltsign是怎么来的

前端代码

通过前端的断点分析,找到发送网络请求的代码,具体如下:
图片描述
显然,salt是一个时间戳加上随机数得到"" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))sign是一个md5加密的字符串,显然,只有模拟出这两个参数就可以了

代码

# -*- coding: UTF-8 -*-
import hashlib
import random
import requests
import time


s = requests.Session()
m = hashlib.md5()

class Dict:
    def __init__(self):
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
            'Referer': 'http://fanyi.youdao.com/',
            'contentType': 'application/x-www-form-urlencoded; charset=UTF-8'
        }
        self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom='
        self.base_config()

    def base_config(self):
        """
        设置基本的参数,cookie
        """
        s.get('http://fanyi.youdao.com/')

    def translate(self):
        i = '你好'
        salf = str(int(time.time() * 1000) + random.randint(0, 9))
        n = 'fanyideskweb' + i + salf + "rY0D^0'nM0}g5Mm1z%1G4"
        m.update(n.encode('utf-8'))
        sign = m.hexdigest()
        data = {
            'i': i,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': salf,
            'sign': sign,
            'doctype': 'json',
            'version': "2.1",
            'keyfrom': "fanyi.web",
            'action': "FY_BY_DEFAULT",
            'typoResult': 'false'
        }
        resp = s.post(self.url, headers=self.headers, data=data)
        return resp.json()

dic = Dict()
resp = dic.translate()
print(resp)

项目地址: 基于Python的爬虫
QQ交流群: 173318043

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值