python制作翻译软件

本文复刻此教程:制作属于自己的翻译软件-很简单【Python】_哔哩哔哩_bilibili

一、明确需求(以搜狗翻译为例)

        (1)网址:https://fanyi.sogou.com/text

       (2) 数据:翻译内容

二、抓包分析——通过浏览器开发者工具分析对应的数据位置

        (1)在搜狗翻译的官网打开开发者工具(F12/右击选择“检查”——“network(网络)”)

原始界面:

        (2)刷新网页

                刷新网页:进入网页,在网页页面上已经有数据

刷新后界面:

        输入/点击搜索/查询:刚开始进入网页没有数据,当我们执行某些操作之后返回

输入后界面:

        下滑页面加载新的数据内容/点击翻页加载更多数据:下滑网页/点击加载更多数据

       (3) 通过关键字搜索找到对应的数据位置

数据包地址:搜狗翻译 - 我的贴身智能翻译专家

二、通过代码逐步实现

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

     模拟浏览器对于url地址发送请求
        模拟浏览器方法——可以直接复制:开发者工具->网络->点击对应数据包->标头->请求标头 ->cookie/ua/referer..(复制之后在代码中字典形式)

        请求网址:刚刚抓包分析找到链接地址,直接复制粘贴即可

        发送请求

                1)一般使用:第三方模块requests进行数据请求
                2)请求方法:开发者工具->网络->点击对应数据包->标头->常规
                        一般是有以下这两种:POST/GET


                3)请求参数
                        GET请求:查询参数(显性)
                                直接在链接中显示,可以不用额外构建
                                 比如:
                        POST请求:表单数据/请求载荷(隐性)
                                开发者工具->网络->点击对应数据包->载荷


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

        获取服务器返回响应数据
        #获取响应的json数据
        json_data =response.json()
        注意:查看返回数据和在响应中是否一致,这里有三种情况: 1.正常返回数据(没有问题);2.返回了数据,但数据不是我们需要的(这种情况说明被反爬了); 3.没有返回数据(空白面板)。(这种情况说明被反爬了)。

        上述第二第三种情况解决方法:1.考虑请求头添加的参数伪装不够完善,只是添加ua,继续添加cookie参数..。2.请求参数/请求头是否存在加密参数内容
3.解析数据——提取我们需要的数据内容


4.保存数据——把提取数据保存为表格/数据库/json/文本

关于S值的逆向分析

对于不同翻译内容,有两个关键点:(1)text:输入需要被翻译的内容(文本内容);(2)s:不同文本内容值不同
        为了解决上述情况,经以下步骤逐步排查:1.根据s值,进行全局搜索,查看是否另外数据包返回; 2.根据s键,进行搜索,查看值是从什么地方生成:根据s键名搜索返回内容过于多、根据堆栈 跟栈调试 XHR断点调试、搜索MD5加密关键代码(MD5指的是长度32位,由0-9 a-f组合起来的值)

1.通过开发者工具搜索定位加密位置

这个关键字搜索出的数量比较少,方便进一步查找。

一个个点击查看是否包含S:

上述步骤可总结为:

2.断点调试分析

        (1)分析传入了什么参数,调了什么方法进行加密处理

        (2)输入翻译内容,执行翻译程序:程序会在我们断点位置暂停程序-->看到相关传入返回值
        

教程中的步骤:​​​​​​​

最终代码:

#导入数据请求模块(需要安装)
import requests
# 导入哈希模块
import hashlibdef Gets(key):string = f'autoen{key}109984457'MD5 = hashlib.md5()MD5.update(string.encode('utf-8'))s = MD5.hexdigest()return s
def translation(key):"""发送请求"""# 下面的参数都在网页的上headers ={#cookie 用户信息,常用于检测是否有登陆账号(登录与否都有)'Cookie': '*****',## User-Agent 用户代理,表示浏览器基本身份信息'User-Agent':'***'}#获取s的加密参数s = Gets(key)# 请求网址url = 'https://fanyi.sogou.com/api/transpc/text/result'#请求参数data ={"from":"auto","to":"en","text":key,"client":"pc","fr":"browser_pc","needQc":1,"s":s,"uuid":"****-**********", #每台电脑的都是不一样的,这里需要修改"exchange":False}#发送请求"""获取数据"""response =requests.post(url=url, json=data, headers=headers)# 获取响应的json数据json_data =response.json()#字典取值:提取翻译结果result = json_data['data']['translate']['dit']print('翻译结果:',result)return resultwhile True:# 用户输入翻译内容key = input('请输入你要翻译的内容:')translation(key)

这里注意,不要盲目把代码复制运行,因为每台电脑的某些参数是不一样的,需要一步步安装教程来修改!!!!

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

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

相关文章

【C++】20.二叉搜索树

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的性能分析3. 二叉搜索树的插入4. 二叉搜索树的查找5. 二叉搜索树的删除6. 二叉搜索树的实现代码7. 二叉搜索树key和key/value使用场景7.1 key搜索场景:7.2 key/value搜索场景:7.3 主要区别:7.4 ke…

vue3探索——使用ref与$parent实现父子组件间通信

在vue3中,可以使用vue3的API defineExpose()函数结合ref或者$parent,实现父子组件数据的传递。 子组件向父组件传递数据defineExpose()和ref 子组件:通过defineExpose() 函数,向外暴露响应式数据或者方法 // src/components/son…

Opencv图片的旋转和图片的模板匹配

图片的旋转和图片的模板匹配 目录 图片的旋转和图片的模板匹配1 图片的旋转1.1 numpy旋转1.1.1 函数1.1.2 测试 1.2 opencv旋转1.2.1 函数1.2.2 测试 2 图片的模板匹配2.1 函数2.2 实际测试 1 图片的旋转 1.1 numpy旋转 1.1.1 函数 np.rot90(kl,k1),k1逆时针旋转9…

重温设计模式--13、策略模式

策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…

计算机基础知识复习1.5

标记-清除算法:标记-清除分为标记 和清除 两个阶段,首先通过可达性分析,标记出所有需要回收的对象,然后统一回收所有被标记的对象。 复制算法:为了解决碎片空间的问题,出现了复制算法 将内存分成两块&…

SQL Server 中的覆盖索引

1. 覆盖索引的工作原理 当查询只涉及索引中已经包含的列时,SQL Server 可以直接使用索引来返回查询结果,而不需要回表到数据页去检索实际的数据行。覆盖索引因此能够显著减少 I/O 操作,提高查询效率。 例如,假设有一个表 Employ…

Golang开发-案例整理汇总

前言 CSDN的文章缺少一个索引所有文章分类的地方,所以手动创建这么一个文章汇总的地方,方便查找。Golang开发经典案例汇总 GoangWeb开发 GolangWeb开发- net/http模块 GolangWeb开发-好用的HTTP客户端httplib(beego) GolangWeb开发- Gin不使用Nginx部署Vue项目 Golang并发开…

交叉编译的核心原理与核心概念

什么是交叉编译? 交叉编译(Cross Compilation)是一种在一种计算机体系结构或操作系统(主机,Host)上生成另一种计算机体系结构或操作系统(目标,Target)上的可执行文件的过…

vue-codemirror定位光标位置并在光标处插入信息

业务场景:在代码编辑器外点击按钮,向代码编辑器内的光标处新增一条拼接好的信息。 getCursor方法: 官方文档: doc.getCursor(?start: string) → {line, ch} Retrieve one end of the primary selection. start is an optional string indicating which end of the select…

【GOOD】A Survey of Deep Graph Learning under Distribution Shifts

深度图学习在分布偏移下的综述:从图的分布外泛化到自适应 Northwestern University, USA Repository Abstract 图上的分布变化——训练和使用图机器学习模型之间的数据分布差异——在现实世界中普遍存在,并且通常不可避免。这些变化可能会严重恶化模…

『SQLite』解释执行(Explain)

摘要:本节主要讲解SQL的解释执行:Explain。 在 sqlite 语句之前,可以使用 “EXPLAIN” 关键字或 “EXPLAIN QUERY PLAN” 短语,用于描述表查询的细节。 基本语法 EXPLAIN 语法: EXPLAIN [SQLite Query]EXPLAIN QUER…

(一)使用 WebGL 绘制一个简单的点和原理解析

使用 WebGL 绘制一个简单的点,我们需要通过 WebGL 的管线来进行一系列的步骤。以下是实现的详细步骤和原理解析: WebGL 绘制点的基本步骤 初始化 WebGL 上下文 首先,我们需要获取 WebGL 上下文,这样才能进行所有的绘图操作。通常…

Vue路由跳转报错

说明:使用 Vue 的router.replace/push,若跳转到当前路由,控制台会报错如下:NavigationDuplicated: Avoided redundant navigation to current location 原因:Vue-router在3.1之后把$router.push()方法改为了Promise。所…

【Axure高保真原型】环形进度条(开始暂停效果)

今天和大家分享环形进度条(开始暂停效果)的原型模版,效果包括: 点击开始按钮,可以环形进度条开始读取,中部百分比显示环形的读取进度; 在读取过程中,点击暂停按钮,可以随…

Euler 21.10(华为欧拉)安装oracle19c-RAC

1. Euler 21.10安装oracle19c-RAC 1.1. 环境规划 1.1.1. 主机规划 hostname IP 实例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系统版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

【python】matplotlib(radar chart)

文章目录 1、功能描述和原理介绍2、代码实现3、效果展示4、完整代码5、多个雷达图绘制在一张图上6、参考 1、功能描述和原理介绍 基于 matplotlib 实现雷达图的绘制 一、雷达图的基本概念 雷达图(Radar Chart),也被称为蛛网图或星型图&…

(三)通过WebGL绘制一个简单的三角形来理解渲染管线

理解 WebGL 绘图原理的关键是了解它的渲染管线。WebGL 渲染管线实际上是由多个阶段组成的,每个阶段都有特定的任务,最终输出的是屏幕上的图像。为了让你能轻松理解这些原理,我将通过一个简单的例子来详细解释。 绘制一个简单的三角形 我们将…

【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)

大家好,我是摇光~ 在运行 Shell 脚本时,遇到 bash: bad file descriptor 错误通常意味着脚本尝试对一个无效或不可用的文件描述符(file descriptor)执行了读写操作。 以下是一些可能导致这个问题的原因、详细案例以及相应的解决…

Kafka3.x KRaft 模式 (没有zookeeper) 常用命令

版本号:kafka_2.12-3.7.0 说明:如有多个地址,用逗号分隔 创建主题 bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic demo --partitions 1 --replication-factor 1删除主题 bin/kafka-topics.sh --delete --boots…

Business Cooperation Process

Business Cooperation Process 商务合作基本流程 并不是每个人都能做到言而有信的,因此还是需要流程来约束的。