Python实现简单的JS逆向解密, 实现翻译软件+语音播报
2024-01-02 17:33:36
嗨喽~大家好呀,这里是魔王呐 ? ~!
python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
环境使用:
-
python 3.8
-
pycharm
第三方模块使用:
-
requests --> pip install requests
-
execjs --> pip install PyExecJS
-
ttkbootstrap --> pip install ttkbootstrap
-
pyttsx3 --> pip install pyttsx3
模块安装:
win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)
案例分为两个部分:
一. 实现翻译功能 <爬虫技术>
如果有翻译接口 --> 抓包分析
抓包分析 通过开发者工具 <浏览器自带>
- 翻译接口: https://fanyi.baidu.com/v2transapi?from=zh&to=en
通过对比:
sign --> 参数是改变的
< js代码生成 >
通过开发者工具 分析 --> JS代码那块生成出来 <扣代码>
运行扣下来的js代码
通过python代码执行js代码, 获取sign值
二. 实现软件界面 <GUI界面开发>
爬虫基本步骤:
-
发送请求, 模拟浏览器对于url地址发送请求
-
获取数据, 获取服务器返回响应数据
-
解析数据, 提取我们需要的数据内容
代码展示
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 数据请求模块
import requests
import execjs
import ttkbootstrap as ttk
import time
import pyttsx3
import json
import hashlib
def 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 result
def 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_result
except:
pass
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()
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
文章来源:https://blog.csdn.net/python56123/article/details/135344614
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!