用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 messagebox

def 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

成品展示

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值