思路:选取有道翻译,用fiddler抓取接口请求信息,提取相关请求参数,破解加密部分。

主要请求数据:

i  :翻译文本

ts:时间戳

salt:ts +随机数

sign:加密信息,经过抓取信息,发现sign = md5(固定字符串1+ i + salt +固定字符串2)  固定字符串请百度方法。

数据经过urlencode后请求,获取到json数据后取出翻译文本。

下面直接上代码:

#coding = utf-8
import requests
from urllib import parse
from hashlib import md5
import hashlib
import time,random class YouDaofanyi(object): def __init__(self,text): self.url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
self.method = "POST"
self.headers = {
"Origin": "http://fanyi.youdao.com",
"Referer": "http://fanyi.youdao.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Accept": "application/json; text/javascript; */*; q=0.01",
"X-Requested-With": "XMLHttpRequest",
"Accept-Language": "zh-CN",
"Accept-Encoding": "gzip; deflate",
"Connection": "Keep-Alive",
"host" : "fanyi.youdao.com",
"Cookie": "xxxxxxxx"
} self.text = text
utc = int(time.time() * 1000)
salt = utc*10 + random.randint(0,11) #print(utc,salt)
signstr = ("fanyideskweb" + str(text) + str(salt) +"rY0D^0'nM0}g5Mm1z%1G4").encode("utf-8")
md5 = hashlib.md5()
md5.update(signstr)
sign = md5.hexdigest() print("input text is : %s" % text)
post_data ={"i":text,
"smartresult":"dict",
"from":"AUTO",
"to":"AUTO",
"client":"fanyideskweb",
"salt":salt,
"sign":sign,
"ts":str(utc),
"bv":"435192ea8debc53c68e5c13d953099ff",
"doctype":"json",
"version":2.1,
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTIME",
"typoResult":"false"
}
self.data = parse.urlencode(post_data) def translate(self):
test = requests.post(url = self.url,data= self.data,headers =self.headers)
resultjson = test.json() if resultjson == {'errorCode': 50}:
translate = ""
else:
try:
translate = resultjson["translateResult"]
translate = translate[0][0]["tgt"]
print("translate result is : %s" % translate)
except KeyError as f:
translate ="" return translate

  

后面想到做一个小工具能翻译文本内容,又能翻译excel档文件,马上实现了,这里把翻译文本直接追加到对应的单元格。

#coding=utf-8

import xlrd,xlwt
from xlrd import *
import Translate
from xlutils.copy import copy def TypeCheck(typename):
flag = False
if typename == 0:
print("单元格内容为空")
elif typename ==1:
print("字符串,翻译中...")
flag = True
elif typename == 2:
print("单元格为数字")
elif typename ==3:
print ("单元格为日期")
elif typename == 4:
print("单元格为布尔类型")
else:
print("格式获取错误")
return flag def Excelread(filename):
rd = xlrd.open_workbook(filename)
sheet = rd.sheet_by_index(0)
readtext = []
readalltext =[]
for i in range(1000):
for j in range(1000):
try:
valuetype = sheet.cell(i,j).ctype
resulttype = TypeCheck(valuetype)
if resulttype== False:
print("不需要进行翻译的内容")
else:
value = sheet.cell_value(i, j)
translatevalue = Translate.translate(value)
newvalue = str(value) + translatevalue
ExcelWrite(filename,i,j,newvalue)
readtext.append(value)
except IndexError as f:
pass
readalltext.append(readtext)
readtext = []
flag = False
for i in range(len(readalltext)):
if readalltext[i] != []:
flag = True
break
else:
pass
return flag def ExcelWrite(filename,raw,cow,value):
rb = xlrd.open_workbook(filename)
wt = copy(rb)
s = wt.get_sheet(0)
s.write(raw,cow,value)
wt.save(filename)

  

再加上tk部分代码:

    try:
root = Tkinter.Tk()
root.title("翻译工具")
root.geometry("850x350") root.resizable(width=False, height=False)
Tkinter.Label(root, text='有道翻译区域', fg='blue', font=("黑体", 20, "bold")).grid(row=0, column=2)
Tkinter.Label(root, text='*Version: v0.1-20190329*', fg='blue', font=("黑体", 10)).grid(row=11, column=4)
Tkinter.Label(root, text='*Design : Sandy1128*', fg='blue', font=("黑体", 10)).grid(row=12, column=4) Tkinter.Label(root,text='需要翻译的文本:',font=("黑体", 10)).grid(row=1,column=1)
fanyitext_t=Tkinter.Text(root,height=5,width=60, fg='blue')
fanyitext_t.grid(row=1,column=2)
fanyitext_t.insert('0.0','123') Tkinter.Label(root, text='或需要翻译的文件路径:',font=("黑体", 10)).grid(row=2, column=1)
fanyifname_t = Tkinter.Text(root, height=5, width=60, fg='blue')
fanyifname_t.grid(row=2, column=2) fanyiinputfile =Tkinter.Button(root, text='浏览',activeforeground = "red",fg='blue',font=("黑体", 12, "bold"), height =2,command= selectfilefanyi)
fanyiinputfile.grid(row = 2,column = 3) btn_fanyi=Tkinter.Button(root,text='开始翻译',activeforeground = "red",fg='black',font=("黑体", 12, "bold"),height = 2,command=qidongfanyiapp)
btn_fanyi.grid(row=5,column=3) root.mainloop() except Exception as e:
pass

视图:

可以将python代码打包成exe文件,方便使用。

免费翻译API破解(简易翻译工具)的更多相关文章

  1. 基于百度通用翻译API的一个翻译小工具

    前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...

  2. C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译

    使用C++开发一个在线翻译工具,这个想法在我大脑中过了好几遍了,所以就搜了下资料,得知网络上有很多翻译API,这里我选择我平时使用较多的有道翻译API进行在线翻译工具开发的练习.翻译API返回的结果常 ...

  3. 利用百度翻译API,获取翻译结果

    利用百度翻译API,获取翻译结果 translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.set ...

  4. 利用有道翻译Api实现英文翻译功能

    有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果.       通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...

  5. C++调用有道翻译API实现在线翻译之发声篇

    大概半月前写了一篇博文:C++中使用Curl和JsonCpp调用有道翻译API实现在线翻译, 得到大家的热情捧场,有人看了文章说要是能发声不是更好,我觉得说的也是哈,能听到专家的标准发音,那该是多美的 ...

  6. 原生js简单调用百度翻译API实现的翻译工具

    先来个在线demo: js翻译工具 或者百度搜索js简单调用百度翻译API工具(不过有个小小的界面显示bug,我想细心的人应该会发现) 或者直接前往该网址:js翻译工具 或者前往我的github:gi ...

  7. 百度翻译api 实现简易微信翻译小程序

    介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示   使用百度翻译api需要申请 appid 与 key 并在 ap ...

  8. 15款免费WiFi入侵破解安全测试工具

    以下是的15款免费(接近免费)的WiFi网络入侵测试工具.这些工具将帮你发现流氓AP,弱Wi-Fi密码等安全隐患,在黑客光临之前把漏洞补上. 一.Vistumbler扫描器 Kismet是一个开源的W ...

  9. 基于百度翻译API开发属于自己的翻译工具

    你是否每天使用着网页翻译工具?你是否遇到过这种情况,上网过程中遇到一个很长的单词但是又不能复制,要开两个浏览器,一个打开百度翻译,照着另一个网页输入单词?你安装了各种翻译软件后,又删除,只因忍受不了那 ...

随机推荐

  1. Angular官方教程采坑

    Angualar 7.0.1是现在的最新版本,教程总体来说还是不错的,但是我在跟着教程做英雄项目的时候出现了一个很明显的坑. 在教程的第6部分HTTP的内容中写到(见下图) 文档中特别注明了要使用0. ...

  2. 基于SRS+OBS搭建直播系统

    这段时间与视频,直播相关的技术不可谓不热,今天我们就近距离接触下,尽早搭上这班车! 我们先看一张效果图 左边是OBS 推流端,右边是VLC播放器,稍微有延迟! 本文是基于VMware(12.5.7)+ ...

  3. 查看linux是否为虚拟机,以及其它信息,cpu,主机型号,主板型号等

    dmidecode -s system-product-name 物理机: [root@swnode1]# dmidecode -s system-product-name I840-GS 虚拟机: ...

  4. ICSE 2018 论文

    仅简单分析自己感兴趣的论文. 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay 分析了 source c ...

  5. idea出现找不到实体类

    今天经理遇到一个很奇怪的问题: 在使用idea时,就是包真实存在,但是包中的实体类却无法智能提示,也无法导入成功: 我推荐的解决办法是重新导入,但是没有用,经理在网上找了很多解决方式,依然无效: 最后 ...

  6. EmWin 文本显示函数

    函数模型----------------------------------- 1:void GUI_DispChar(U16 c):  在当前窗口的当前文本位置处,使用当前字体显示单个字符.  c ...

  7. NOIP刷题建议(未完结)

    1NOIP提高组真题 2NOI部分题目 为什么要写这个? 主要是一个人在硕大的机房里打(wan)代(you)码(xi),没多少时间了,所以打算来总结一下. 这个也是为我接下来冲刺做一个准备. 这个会不 ...

  8. 适用于Mac 的自动补丁管理软件

    适用于Mac 的自动补丁管理软件 ManageEngine Desktop Central 的功能越来越神奇.系统管理员现在可以使用 Desktop Central 管理异构网络.即使是最复杂的任务, ...

  9. 《Linux就该这么学》第十一天课程

     防火墙常用的一些命令参数 原创地址:https://www.linuxprobe.com/chapter-08.html firewalld中常用的区域名称及策略规则 区域 默认规则策略 trust ...

  10. netcore程序部署及守护

    一.程序发布 1.在本机编译无误的情况下,选择发布成文件系统.注意如果使用了swagger 需要将生成的xml文档说明复制到发版包里面.否则会报错.(可以在项目的csproj 中加入 <Prop ...