PythonJS逆向解密——实现翻译软件+语音播报

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • python 3.8

  • pycharm

模块使用:

  • requests --> pip install requests

  • execjs --> pip install PyExecJS

  • ttkbootstrap --> pip install ttkbootstrap

  • pyttsx3 --> pip install pyttsx3

第三方模块安装:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可


本次案例分为两个部分:

一. 实现翻译功能 <爬虫技术>

二. 实现软件界面 <GUI界面开发>

一. 实现翻译功能 <爬虫技术>

  • 如果有翻译接口 --> 抓包分析

    抓包分析 通过开发者工具 <浏览器自带>

    • 翻译接口: https://fanyi.baidu.com/v2transapi?from=zh&to=en
  • 通过对比:

    sign --> 参数是改变的

    < js代码生成 >

  • 通过开发者工具 分析 --> JS代码那块生成出来 <扣代码>

    运行扣下来的js代码

  • 通过python代码执行js代码, 获取sign值

基本步骤:

  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取服务器返回响应数据

  3. 解析数据, 提取我们需要的数据内容

代码展示

一. 获取翻译接口

网址: https://fanyi.baidu.com/?aldtype=16047#en/zh/Welcome%20to%20Qingdeng%20Education

通过开发者工具直接进行抓包分析, 找到对应的翻译数据包

Post请求, 需要提交data参数:

主要改变的参数:

  • sign

    这个参数是有加密的, 每个翻译的内容对应一个sign值

  • ts

    这是时间戳, 也就是请求当前接口的时间节点

    加密参数获取 <通过JS代码生成的>

找到生成参数的JS代码, 然后扣代码就好了, 缺什么补什么

# 数据请求模块
import requests
import execjs
import ttkbootstrap as ttk
import time
import pyttsx3
import json
import hashlibdef sign(word):# 读取JS代码文件with open('jiemi.js', encoding='utf-8') as f:text = f.read()# 编译一下js文本内容js_code = execjs.compile(text)# 调用js代码函数result = js_code.call('baidu', word)  # 调用函数名 字符串return resultdef search(word):result = sign(word)"""1. 发送请求, 模拟浏览器对于url地址发送请求"""# 模拟浏览器 --> headers请求头, 字典数据headers = {'Cookie': 'BAIDUID=7E8AD9B6DCD3A4DA0A60D3EB8FFB9C71:FG=1; BAIDUID_BFESS=7E8AD9B6DCD3A4DA0A60D3EB8FFB9C71:FG=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1692365550; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1692365550; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; ab_sr=1.0.1_ZTI2YmY3OTk2MTQ4Nzk1YjY5MDBlYWVhZTk4ODA2NGJlMWZlMTNkYjNjZTRlNTI3MTc5ZWM3N2RkOGI1MzJiM2M1NDNhNmFlY2RjOTk2MzUxNjM4Y2E1ZTRjZmQyM2JkY2JiYzIxZTU0ZjA5MTM3MDU1YzBiYmNlNDg3ZmQxNjM1MjU4ZmE3OGU5MDRkYjA3N2I4ZWI4YzI2NTY1OThkZg==','Host': 'fanyi.baidu.com','Origin': 'https://fanyi.baidu.com','Referer': 'https://fanyi.baidu.com/?fr=pcPinzhuan','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',}# 请求链接url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'# 请求参数data = {'from': 'zh','to': 'en','query': word,'transtype': 'realtime','simple_means_flag': '3','sign': result,'token': '533f57ec8e908ecfc6c003868d8c9518','domain': 'common','ts': int(time.time() * 1000),}try:# 发送请求response = requests.post(url=url, data=data, headers=headers)"""2. 获取数据, 获取服务器返回响应数据3. 解析数据, 提取我们需要的数据内容"""json_data = response.json()print(json_data)trans_result = json_data['trans_result']['data'][0]['dst']return trans_resultexcept:pass

二. 软件界面开发

GUI界面没有什么特别的, 就是一些方法的使用

def show():engine = pyttsx3.init()word = input_va.get()trans_result = search(word)text.delete('0.0', 'end')text.insert('insert', trans_result)engine.say(word+trans_result)engine.runAndWait()root = ttk.Window(title="翻译软件",themename="litera",size=(400, 200),
)
root.place_window_center()
root.resizable(False, False)frame = ttk.Frame()
frame.pack(pady=10)
input_va = ttk.StringVar()
ttk.Label(frame, text='请输入翻译内容:', font=('微软雅黑', 12)).pack(side=ttk.LEFT)
ttk.Entry(frame, textvariable=input_va).pack(side=ttk.LEFT, padx=5)
ttk.Button(frame, text='搜索', command=show).pack(side=ttk.LEFT)text_frame = ttk.Frame()
text_frame.pack()
text = ttk.Text(text_frame)
text.pack()root.mainloop()

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响...

全文链接&#xff1a;http://tecdat.cn/?p31445 机器学习在环境监测领域的应用&#xff0c;着眼于探索全球范围内的环境演化规律&#xff0c;人类与自然生态之间的关系以及环境变化对人类生存的影响&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 课题着眼于…

Yolov8小目标检测(10):DCNv3可形变卷积助力涨点,COCO新纪录65.4mAP | CVPR2023 InternImage

💡💡💡本文改进:DCNv3,基于DCNv2算子引入共享投射权重、多组机制和采样点调制 DCNv3 | 亲测在红外弱小目标检测涨点,map@0.5 从0.755提升至0.765 💡💡💡Yolo小目标检测,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一…

Rocky linux 8.8 基础环境一键配置

1、有线 dnf install -y net-tools dnf install -y vim dnf install -y wget sudo dnf install epel-release -y sudo dnf install dkms -ysudo dnf install -y dnf-utils device-mapper-persistent-data lvm2 sudo dnf config-manager --add-repohttps://download.docker.com…

事件捕获和事件冒泡

事件捕获和事件冒泡与事件流有关系。 以下代码&#xff0c;点击 aa &#xff0c;控制台会打印什么呢&#xff1f; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content&q…

ChatGPT在智能娱乐和游戏互动中的应用如何?

在智能娱乐和游戏互动领域&#xff0c;ChatGPT具有广泛的应用潜力&#xff0c;可以为用户带来更丰富、个性化和有趣的体验。从虚拟角色和游戏情节到实时互动和玩家支持&#xff0c;ChatGPT可以在多个方面为游戏产业带来创新和改变。 **1. **虚拟角色和NPC互动**&#xff1a;Ch…

Delphi 开发手持机(android)打印机通用开发流程(举一反三)

目录 一、场景说明 二、厂家应提供的SDK文件 三、操作步骤&#xff1a; 1. 导出Delphi需要且能使用的接口文件&#xff1a; 2. 创建FMX Delphi项目&#xff0c;将上一步生成的接口文件&#xff08;V510.Interfaces.pas&#xff09;引入: 3. 将jarsdk.jar 包加入到 libs中…

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…

带着问题看SpringBoot

带着问题看SpringBoot 1、Spring容器具体是什么&#xff1f; 跟进run方法&#xff0c;context this.createApplicationContext()&#xff0c;得出容器是AnnotationConfigServletWebServerApplicationContext类。 SpringApplication.run(ServeroneApplication.class, args);…

小匠物联联合亚马逊云助力企业数智化出海

如何让家电企业出海产品数智化之路走上康庄大道&#xff1f;8月25日,亚马逊云科技[创新成长企业专列]这趟上云快车将开往宁波站&#xff0c;助力宁波的制造、软件等企业扬帆起航&#xff01;现场举办“亚马逊云科技助力企业出海数智沙龙”&#xff0c;小匠物联受邀出席。 会议现…

有没有好用的微信管理软件?解决企业营销管理痛点

企业营销管理痛点&#xff1a; 1、如何提高员工跟进客户的能力和效率&#xff1f; 2、怎么杜绝飞单私单工作怠慢等问题&#xff1f; 3、微信好友太多无法实现精准营销&#xff1f; 4、如何第一时间知道员工的违规行为&#xff1f; 多微信聚合聊天 多个微信号聚合在一个界面…

【Java 动态数据统计图】前后端对接数据格式(Map返回数组格式数据)六(120)

说明&#xff1a; 前端使用&#xff1a;vue3.0 前后端对接数据格式&#xff1a;无非就是前端把后端返回的数据处理为自己想要的格式&#xff0c;或者&#xff0c;后端给前端处理好想要的格式&#xff1b; 针对前后端的柱状图&#xff0c;趋势图等数据对接&#xff0c;前端一般需…

iOS开发Swift-字符串与字符

1.字符串的定义 let someString "some string value"2.多行字符串的定义(""") let quotation """ 有一个人前来买瓜。 "这瓜甜吗&#xff1f;"他问。 """前一个"""前和后一个""&…

线性代数的学习和整理8:行列式相关

目录 1 从2元一次方程组求解说起 1.1 直接用方程组消元法求解 1.2 有没有其他方法呢&#xff1f;有&#xff1a;比如2阶行列式方法 1.3 3阶行列式 2 行列式的定义 2.1 矩阵里的方阵 2.2 行列式定义&#xff1a;返回值为标量的一个函数 2.3 行列式的计算公式 2.4 克拉…

linux 源代码编译

源代码编译 有时候会在linux上下载源码包&#xff0c;然后进行编译成可执行的文件&#xff0c;这个过程需要经过configure、make、make install、make clean四个步骤 configure 为这个程序在当前的操作系统环境下选择合适的编译器和环境参数来编译该代码 make 对程序代码进行编…

机器学习之损失函数

深度学习中常用的损失函数多种多样&#xff0c;具体选择取决于任务类型和问题的性质。以下是一些常见的深度学习任务和相应的常用损失函数&#xff1a; 分类任务&#xff1a; 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;&#xff1a;用于二分类和多类别分类任务…

数据库连接池druid 的jar包官网下载-最新版下载

进入官网Central Repository: com/alibaba/druid 往下滑 找到最新版点击进入 找到该jar包 点击即可下载

Redis 执行 RDB 快照期间,主进程可以正常处理命令吗?

执行了 save 命令&#xff0c;会在主进程生成 RDB 文件&#xff0c;由于和执行操作命令在同一个线程&#xff0c;所以如果写入 RDB 文件的时间太长&#xff0c;会阻塞主进程。 执行 bgsave 过程中&#xff0c;由于是交给子进程来构建 RDB 文件&#xff0c;主进程还是可以继续工…

Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理

Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理 目录 Unity C# 之 Task、async和 await 、Thread 基础使用的Task的简单整理 一、Task、async和 await 、Thread 基础概念 1、线程&#xff0c;多线程 2、Task 3、async &#xff08;await &#xff09;…

Go与Rust的对比与分析

Rust 和 Go 是两种现代语言&#xff0c;近年来获得了巨大的关注&#xff0c;每种语言都有自己独特的优势和权衡。在这篇文章中&#xff0c;我们将深入探讨 Rust 和 Go 之间的差异&#xff0c;重点关注性能、语言功能和其他关键因素&#xff0c;以帮助您针对您的开发需求做出明智…

[前端] vue使用Mousetrap.js实现快捷键

Mousetrap.js介绍 Mousetrap.js 是一个处理键盘快捷键的 JavaScript 库&#xff0c;它允许您定义复杂的键盘快捷键并在浏览器中使用。 官方地址 代码仓库 安装库 在命令行中运行以下命令安装 mousetrap 模块&#xff1a; npm install mousetrap再次运行命令行&#xff0c;安…