Python实现本地翻译API

'''
JS加密代码
var r = function(e) {
        var t = n.md5(navigator.appVersion)
          , r = "" + (new Date).getTime()
          , i = r + parseInt(10 * Math.random(), 10);
        return {
            ts: r,
            bv: t,
            salt: i,
            sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")
        }
    };
r = lts   i = salt  e = word
'''

# import time
# print(int(time.time())*10000)
# '16549975400000'  python输出
# '16549969865516'  有道 lts
# 'sign: ca53ec0dbad1d3ad020fcfabc86f0387' 32位

import random
import time
from hashlib import md5
import requests

class YoudaoSpider:
    def __init__(self):
        # url一定要写抓包时抓到的POST请求的提交地址,但是还需要去掉 url中的'_o',
        # '_o'这是一种url反爬策略,做了页面跳转,若直接访问会返回{"errorCode":50}
        self.url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        self.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
        }

    # 获取lts时间戳,salt加密盐,sign加密签名
    def get_lts_salt_sign(self, word):
        lts = str(int(time.time()*10000))
        salt = lts+str(random.randint(0, 9))
        string = "fanyideskweb" + word + salt + "Ygy_4c=r#e#4EX^NUGUc5"
        s = md5()
        # md5的加密串必须为字节码
        s.update(string.encode())
        # 16进制加密
        sign = s.hexdigest()
        print(lts, salt, sign)
        return lts, salt, sign

    def attack_yd(self, word):
        lts, salt, sign = self.get_lts_salt_sign(word)
        # 构建form表单数据
        data = {
        'i': word,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': salt,
        'sign': sign,
        'lts': lts,
        'bv': 'bdc0570a34c12469d01bfac66273680d',
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_REALTlME'
        }
        # 使用 reqeusts.post()方法提交请求
        resp = requests.post(self.url, headers=self.headers, data=data)
        # 将json格式的字符串转为python数据类型
        html = resp.json()
        print(html)
        # {"translateResult":[[{"tgt":"你好世界","src":"hello world"}]]}
        res = html['translateResult'][0][0]['tgt']
        print('翻译结果:', res)

    def run(self):
        try:
            word = input('请输入要翻译的单词:')
            self.attack_yd(word)
        except Exception as e:
            print(e)


if __name__ == '__main__':
    spider = YoudaoSpider()
    spider.run()

网址https://fanyi.youdao.com/

先去控制台抓包 获取表单数据 仔细观察变化规律 salt lts sign 三个是变化的数据

再去源代码部分格式化JS代码分析 获取加密字符串的Python表示

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然可以!以下是一些基本步骤: 1. 选择GUI框架:Python有很多可用的GUI框架,例如Tkinter、PyQt、wxPython等等。选择一个适合自己的GUI框架,并确保已经安装。 2. 获取翻译API:要构建翻译器,需要使用翻译API。目前有许多免费和付费的翻译API,包括百度、谷歌、有道等等。根据自己的需求选择一个API,然后按照API提供的文档进行注册并获取API密钥。 3. 编写代码:使用Python编写代码,与API进行交互,并处理用户输入和输出。在这个过程中,需要涉及到文本输入框、按钮、标签等GUI组件,以及网络请求、JSON解析等技术。 4. 测试和调试:完成代码编写后,进行测试和调试,确保程序可以正常运行,并且输出正确的翻译结果。 以上是一个基本的步骤。当然,在实际开发中还需要考虑更多的细节和问题,例如界面设计、异常处理、性能优化等等。 ### 回答2: 要用Python写一个GUI翻译器,我们可以使用Python的Tkinter库来创建GUI界面,并使用翻译API来完成翻译功能。 首先,需要在Python中安装Tkinter库和翻译API库,比如Google Translate API或百度翻译API。 接下来,我们可以创建一个GUI窗口,包括一个输入框用于输入需要翻译的文本,一个下拉菜单用于选择源语言和目标语言,以及一个按钮用于触发翻译操作。 当用户点击翻译按钮时,可以获取输入框中的文本和下拉菜单中选择的源语言和目标语言,然后调用翻译API来进行翻译。 在翻译结果返回后,可以在GUI窗口中显示翻译结果,比如在一个文本框或标签中显示。 除了翻译功能,我们还可以添加一些其他的功能,比如清空输入框、保存翻译记录等。 最后,我们可以使用布局管理器来布置GUI界面,以确保界面的美观和易用性。 总结起来,要用Python写一个GUI翻译器,我们需要安装必要的库,创建GUI窗口,获取用户输入和选择,调用翻译API进行翻译,显示翻译结果,并添加一些其他的功能。这样就可以创建一个简单的GUI翻译器了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值