用python破解有道翻译,打造属于自己的翻译软件!

用python破解有道翻译,打造属于自己的翻译软件!,第1张

概述本文利用爬虫+tkinter打造一个属于自己的简易翻译软件,代码较简单,但篇幅较长。需要本文完整源码的小伙伴,可以关注公众号“python与EXCEL之交”,在公众号后台发送“翻译”二字获取!前言导入需要用到的模块:fromtkinterimport* #可视化界面模块importhashlib #解密模

本文利用爬虫+tkinter打造一个属于自己的简易翻译软件,代码较简单,但篇幅较长。

需要本文完整源码的小伙伴,可以关注公众号“python与EXCEL之交”,在公众号后台发送“翻译”二字获取!

前言

导入需要用到的模块:

from tkinter import *	# 可视化界面模块import hashlib 	 # 解密模块import time		# 时间模块 import requests		# 数据请求模块import Jsonpath		# Json 数据提取模块import Json		# 配合Jsonpath 把转换成Json格式

本文一共有四个函数,包括加密参数破解、数据请求、可视化界面函数:

"""加密参数sign破解"""def sign(e, i):	pass	"""加密参数bv破解"""def bv():	pass"""解密参数接收、数据请求、可视化界面关联"""def data_text():	pass"""可视化界面"""	def tk():	pass	"""启动器"""if __name__ == '__main__':   tk()		
可视化界面

我们先在tk()函数中把可视化界面绘制出来,然后再敲打爬虫相关程序。

定义全局变量,这三个参数都是后面需要与爬虫程序关联的:

global text, entry, var

创建界面和界面标题:

root = Tk()root.Title('简易翻译')# 显示界面root.mainloop()


创建标签组件,设置字体和字号,定位都合适的位置:

# grID()默认0行0列label = Label(root, text='请输入需要翻译的内容:', @R_404_6837@=('隶书', 20)).grID()	# 输入框entry = Entry(root, @R_404_6837@=('隶书', 20)).grID(row=0, column=1)


创建翻译模式,value所携带的参数是传入var中,关联爬虫程序,当用户点击某个按钮时,所携带的参数会传入到请求函数,进行翻译模式的选择,而所携带的参数需要从网页中获取,到时会讲解。

# 设置只能单选按钮var = StringVar()button1 = Radiobutton(root, text='中译英', variable=var, value='en,zh-CHS')button1.grID(row=1, column=0, sticky=S)	# sticky位置,E S W N 代表东南西北button2 = Radiobutton(root, text='英译中', variable=var, value='zh-CHS,en')button2.grID(row=1, column=1, sticky=N)


创建列表框,展示翻译结果:

# 列表框text = ListBox(root, @R_404_6837@=('隶书', 16), wIDth=50, heigh=15)text.grID(row=2, columnspan=2)

创建开始按钮和退出按钮,最后显示界面。

# 开始翻译按钮button(root, text='开始翻译', @R_404_6837@=('隶书', 15), command=data_text).grID(row=3, column=0)# 退出按钮button(root, text='退出程序', @R_404_6837@=('隶书', 15), command=root.quit).grID(row=3, column=1)root.mainloop()

这样一个简易的可视化界面就创建好了。

爬虫程序

目标网址:

https://fanyi.youdao.com/

进入网页后,鼠标右键点击检查或者按键盘上的F12进入浏览器的开发者工具,点击Network,因为数据是动态加载的,所以需要进入XHR更容易筛选数据包。


接着在文本框中输入你想要翻译内容,然后点击翻译。这时浏览器的开发者工具就抓取了一条数据包,点开数据包发现是一条发送POST请求的链接。


我们以前说过,POST需要查看他所携带的参数的,所以我们往下拉,查看数据包所携带的参数。


在这些参数中,比较重要的是:ifromtosaltsignltsbvi代表的是翻译的内容,fromto代表的是翻译模式,saltlts不难看出是时间戳,signbv是经过加密的参数,这里我们先对signbv进行解密。

i: 中国		# 翻译的内容from: zh-CHS	# 中译英的中to: en		# 中译英的英smartresult: dictclIEnt: fanyIDeskwebsalt: 16200384705444	# 十四位的时间戳sign: cb74e00c51e313c958423ea4d6487036	# 加密参数lts: 1620038470544		# 十三位的时间戳bv: 3d91b10fc349bc3307882f133fbc312a	# 加密参数DOCTYPE: Jsonversion: 2.1keyfrom: fanyi.webaction: FY_BY_CliCKBUTTION

复制sign,按键盘上的CTRL+shift+f进行全局搜索,找到了一条Js文件


进入文件,然后点击左下角的中括号进行格式化:


接着在文件内按键盘上的CTRL+f进行搜索,结果有十一个。我们往下找到第四个是 链接提交 data 表单,这个是已经加密好的了,如果不知道是不是加密的可以打上断点试试。我们需要继续往下查找,找他们是如何生成的。


找到第五个的时候在右边打上断点:


然后再次翻译内容,程序就在这停下来了,我们发现tsbvsaltsign都是在这里生成的。


用鼠标放在navigator.appVersion中就可以看到,bv就是对浏览器的ua进行 MD5 加密;sign 就是两串字符串加入要翻译的内容e、十四位的时间戳i进行MD5 加密:


至此,我们就找到了bv和sign是如何生成的。这里我们直接用hashlib进行解密:

md5_text = "fanyIDeskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@"# 需要带encode进行编码解码signs = hashlib.md5(md5_text.encode(enCoding='utf-8')).hexdigest()ua = "5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"ts = hashlib.md5(ua.encode(enCoding='utf-8')).hexdigest()

在data_text函数中接收解密参数,传入请求链接,连接相应按钮。

key = entry.get()	from_to = var.get()times = time.time()salt = str(round(times * 10000))lts = str(round(times * 1000))sign_ = sign(key, salt)data = {    'i': key,	# 连接输入框    # 连接模式按钮;因为按钮传入的参数有两个,所以需要进行切割    'to': str(from_to.split(',')[0]),	    'from': str(from_to.split(',')[1]),    'smartresult': 'dict',    'clIEnt': 'fanyIDeskweb',    'salt': salt,    'sign': sign_,    'lts': lts,    'bv': bv(),    'DOCTYPE': 'Json',    'version': 2.1,    'keyfrom': 'fanyi.web',    'action': 'FY_BY_CliCKBUTTION'}url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'# 这里需要加入headersresposen = requests.post(url=url, data=data, headers=headers)Json_data = Json.loads(resposen.text)tgt = Jsonpath.Jsonpath(Json_data, '$..tgt')[0]text.insert(END, tgt)	# 连接文本框text.see(END)text.update()
总结

以上是内存溢出为你收集整理的用python破解有道翻译,打造属于自己的翻译软件!全部内容,希望文章能够帮你解决用python破解有道翻译,打造属于自己的翻译软件!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存