用Python做一个翻译软件,比上浏览器快100倍

简单的用Python来做一个翻译软件

开发环境

Python 3.10
Pycharm

模块使用

requests -> pip install requests
hashlib
tkinter

案例分为三部分:

1. 爬虫: 获取翻译接口, 请求获取翻译结果问题1: 接口抓包分析问题2: 请求需要写cookie问题3: 不同文本翻译, s加密参数2. 界面: GUI界面开发3. 打包: 把py程序打包exe软件

为了大家能更好的学会案例,我还专门录制了视频进行详细讲解,文末点击名片自取即可。

基本流程

一、数据来源分析

1.明确需求

明确采集的网站以及数据内容
网址: https://******/text
数据: 翻译内容

2.抓包分析

通过浏览器开发者工具分析对应数据位置

  • 打开开发者工具
    • F12 / 右键点击检查选择network(网络)
  • 刷新网页
    刷新网页: 进入网页, 在网页页面上已经有数据
    输入/点击搜索/查询: 刚开始进入网页没有数据, 当我们执行某些操作之后返回
    下滑页面加载新的数据内容/点击翻页加载更多数据: 下滑网页/点击加载更多数据
  • 通过关键字搜索找到对应的数据位置
    • 关键字: 需要什么数据就搜什么数据

数据包地址: https://*****/api/transpc/text/result

二、代码实现步骤

1.发送请求

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

模拟浏览器

可以直接复制: 开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 请求标头 -> cookie/ua/referer…

  • 复制之后在代码中字典形式

请求网址

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

1.发送请求

一般使用: 第三方模块 requests 进行数据请求
-请求方法: 开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 常规
POST GET
-请求参数
GET请求: 查询参数 (显性)
-直接在链接中显示, 可以不用额外构建
比如: https://f*****/text? keyword=%E4%BD%A0%E5%A5%BD&transfrom=auto&transto=en&model=general

POST请求: 表单数据/请求载荷 (隐性)
-开发者工具 -> 网络 -> 点击对应数据包 -> 载荷

2.获取数据

获取服务器返回响应数据

获取响应的json数据
json_data = response.json()
注意: 查看返回数据和在响应中是否一致

1.正常返回数据 (没有问题)
2.返回数据 (数据不是我们需要的) -> 被反爬了
3.没有返回数据 (空白面板) -> 被反爬了

如何解决:

1.考虑请求头添加的参数伪装不够完善,只是添加ua, 继续添加cookie参数…
2.请求参数/请求头 是否存在加密参数内容

3.解析数据

提取我们需要的数据内容

4.保存数据

把提取数据保存表格/文本/json/数据库

关于S加密参数逆向分析

对于不同翻译内容:

	text: 输入需要被翻译的内容 (文本内容) s: 不同文本内容值不同

1.根据s值, 进行全局搜索, 查看是否另外数据包返回
2.根据s键, 进行搜索, 查看值是从什么地方生成

	-根据s键名搜索返回内容过于多-根据堆栈 跟栈调试-XHR断点调试-搜索MD5加密关键代码MD5 -> 长度: 32位 由0-9 a-f组合起来

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

2.断点调试分析

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


输入翻译内容, 执行翻译程序

程序会在我们断点位置暂停程序 -> 看到相关传入返回值
输入翻译内容, 执行翻译程序程序会在我们断点位置暂停程序 -> 看到相关传入返回值
D -> "1b921dbefaa8d939afca4068480f850d"
传入的参数 -> autozh-CHS你好109984457
1.当我们查看对应返回值之后, 和请求参数进行对比
2.长度: 32位 由0-9 a-f组合起来 md5加密- 验证是否为标准MD5加密 (魔改)

GUI界面开发


# 导入哈希模块
import hashlib
# 导入gui模块
import tkinter as tk
# 消息框
from tkinter import messageboxdef Click():try:# 获取输入框的内容key = input_va.get()# 进行翻译操作result = translation(key)# 先清空文本框text.delete('0.0', 'end')# 把翻译内容添加文本框中, 鼠标光标在那就添加在哪text.insert('insert', result)except:messagebox.showerror(title='错误信息', message='你输入的内容有误')# 创建窗口对象
root = tk.Tk()
# 设置窗口标题
root.title('翻译软件')
# 设置窗口大小
root.geometry('790x500+200+200')
# 固定窗口大小
root.resizable(False, False)
input_frame = tk.Frame(root)
input_frame.pack(pady=20)
# 设置可变变量
input_va = tk.StringVar()
# 设置文本标签
tk.Label(input_frame, text='请输入你要翻译内容: ', font=('微软雅黑', 20)).pack(side=tk.LEFT)
# 设置输入框
tk.Entry(input_frame,font=('微软雅黑', 20), textvariable=input_va).pack(side=tk.LEFT, fill=tk.BOTH, padx=20)
# 设置按钮
tk.Button(input_frame, text='翻 译', font=('微软雅黑', 20), command=Click).pack(side=tk.LEFT)
text_frame = tk.Frame(root)
text_frame.pack()
text = tk.Text(text_frame,font=('微软雅黑', 20))
text.pack()
# 展示窗口
root.mainloop()

打包EXE

打包的话使用pyinstaller ,具体操作视频有详细讲解

pyinstaller -F-w 翻译.py

成品展示

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

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

相关文章

国科大作业考试资料-人工智能原理与算法-2024新编-第十二次作业整理

袋子里面有3个有偏差的硬币a、b和c,抛掷硬币正面朝上的概率分别是20%、60%和80%。从袋 子里随机取出一个硬币(3个硬币被取出的概率是相等的),并把取出的硬币抛掷3次,得到抛掷结 果依次是X1 , X2和 X3。 a. 画出对应的贝叶斯网络并定义必要的CPT表。 b. 如果抛掷结果是…

PDF解锁网站

https://smallpdf.com/cn/unlock-pdfhttps://smallpdf.com/cn/unlock-pdfhttps://www.freemypdf.comhttps://www.freemypdf.com

【python】python图书管理系统_普通用户+管理员菜单(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

vue vite开发环境https接口代理无法访问的问题

一、问题现象 本地请求是所有的接口前边只需要加一个前缀即可 —— /local/。比如登录接口就是 ‘/local/login’。于是去请求发现直接报错了,报错信息如下: 使用接口代理https接口请求,访问报错的问题,提示如下: http…

[代码审计]记一次简单的java代码审计

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。 免责声明 本博客所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全…

FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 这个接口用户可以不登录,因为我们的课程随意浏览 那么我们梳理下这里的逻辑 1.根据课程id判断课程是否存在 2.课程需要返回课程的详情 3…

vue2 前端实现pdf在线预览(无插件版)

toFielDetail()是点击预览的方法,getOfficialFile是获取文件流的接口正常定义即可: export function getOfficialFile(query) {return request({url: /dataAsset/projectassess/getOfficialFile,method: get,params: query,}); } 调用接口的页面需要引用…

C# Task.WaitAll 的用法

目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法,它属于 System.Threa…

DjangoRF-5-用户管理-users接口

1、创建模型,user模型之前创建过了,继承了原有的模型类 2、序列化器 在 users/serializers.py 模块中添加: class UserSerializer(serializers.ModelSerializer):class Meta:model Userfields [id, username, password, mobile, email, is…

【学习笔记】| 01 - 初识单片机

单片机(Single-Chip Microcomputer),又称单片微控制器,是一种集成电路芯片。它采用超大规模集成电路技术,将具有数据处理能力的中央处理器(CPU)、随机存储器(RAM)、只读存…

【简单讲解Perl语言】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于微信小程序+SpringBoot+Vue的核酸检测服务系统(带1w+文档)

基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 在目前的情况下,可以引进一款医院核酸检测服务系统这样的现代化管理工具,这个工具就是解决上述问题的最好的解决方案。它不仅可以实…

20240727生活沉思------------关于报考软考高级架构师

软考高级架构师 软考高级架构师 缴费 主要是报的千峰 1880元。 相对来说还算可以吧。。。其他也没给我机会选择啊 备考 我现在开始备考,考试时间2024年11月。 今天是正式开始7.27号。 给大家看看接下来我的课程安排: 额,还是满满当当的…

日入800+小红书AI表情包项目拆解

一个高考结束之后,进入暑假,只要有手就能做的AI搞钱项目,不到2个月的时间在小某书上成功涨粉5w,通过发布广告,一条广告甚至还能赚到2000元; 只要有市场需求就可以制作这种表情包快速搞钱,上手非…

openmv 学习笔记(24电赛笔记)

模版匹配 模版匹配是一种计算机视觉技术,用于图像或者视频中查找特定的模版或者对象,查找模版可以是数字或者是物体,技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。 使用模版匹…

网络编程总复习

TCP的创建: 服务器端 : 客户端:

【计算机网络】IP分片实验

一:实验目的 1:理解IP数据报分片的工作原理。 2:理解IP协议报文类型和格式。 二:实验仪器设备及软件 硬件:RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件:记事本、WireShark、Chrom…

C++基础编程100题-025 OpenJudge-1.4-05 整数大小比较

025 OpenJudge-1.4-05 整数大小比较 http://noi.openjudge.cn/ch0104/05/ 描述 输入两个整数&#xff0c;比较它们的大小。 输入 一行&#xff0c;包含两个整数x和y&#xff0c;中间用单个空格隔开。 0 < x < 2^32, -2^31 < y < 2^31。 输出 一个字符。 若x…

倒计时11天,生物发酵行业盛宴即将在沪召开!

随着生物科技领域的蓬勃发展&#xff0c;2024上海生物发酵展的召开已经进入倒计时阶段&#xff0c;距离这场生物发酵产业的年度盛事仅剩11天。作为行业内备受瞩目的展会&#xff0c;它不仅汇聚了全球顶尖的生物发酵技术、产品与服务&#xff0c;更是一个探讨行业趋势、促进合作…

Scikit-learn简介

Scikit-learn 是一个广泛使用的开源机器学习库&#xff0c;它建立在 NumPy、SciPy 和 matplotlib 这些科学计算库之上&#xff0c;提供了简单高效的数据挖掘和数据分析工具。以下是 Scikit-learn 在机器学习项目中的一些典型应用&#xff1a; 1. **数据预处理**&#xff1a; …