Python調用有道詞典翻譯

Python調用有道詞典翻譯

分析

有道翻譯官網

圖片描述

翻譯按鈕

點擊翻譯按鈕,查看網絡請求,如圖
圖片描述
共有四個網絡請求,經過分析,查看返回的信息,顯然第一個是真正的翻譯請求,具體信息以下:
圖片描述
如圖所示,咱們真正關注的是請求參數,在這麼多的參數當中,其中,i是須要翻譯的詞語,經過對多個翻譯請求分析知道,from是翻譯原文語言,to是翻譯的目標語言,剩下的除了saltsign以外的都是固定的,所以,如今問題是saltsign是怎麼來的前端

前端代碼

經過前端的斷點分析,找到發送網絡請求的代碼,具體以下:
圖片描述
顯然,salt是一個時間戳加上隨機數獲得"" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))sign是一個md5加密的字符串,顯然,只有模擬出這兩個參數就能夠了git

代碼

# -*- 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交流羣: 173318043web

相關文章
相關標籤/搜索