大家好呀,由于疫情好久没更新文章啦!今天难得有空更新一个有意思的实战项目。
我是xu ,我一直在路上。
你将学到 JS 解密 + tornado 框架写get+ post 请求基础知识+python文件打包成exe 可执行文件。本章干货满满。
前几章已经讲过python2 JS 解密过程,今天讲python3 构造js解密,并且今天再来利用爬虫和tornado 框架打造实时翻译程序。
既然是 实时翻译 那我们先安排网易在线翻译,看能不能做到爬虫实时翻译,第一步我们先尝试写 网易翻译爬虫程序。网址:http://fanyi.youdao.com/
第一步我们在翻译框输入任意字符如:"我爱中国",F12后点击Network 在 XHR 菜单栏点击找http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 来我们看看都有什么参数提交,通过多次尝试 发现下图代表 要翻译的内容,salt、sign、ts、bv 等4个参数是必要参数那么这4个参数都怎么形成的呢,如果想做到实时翻译那么这4个字段 就要给他安排的明明白白,最直观的就是全局搜索,加断点调试,我们先搜索一下试试水,
通过搜索 'sign' 我们发现 下图 JS 加密部分,对比发现我们可以看到 salt、sign、ts、bv 这四个参数的加密方式,观察发现 ts 是当前时间戳、salt 是 ts+随机一位数字、bv 是md5 当前浏览器标识后的加密值、sign 是 'fanyideskweb' +'要翻译的内容'+ salt +'Nw(nmmbP%A-r6U3EUn]Aj' 这个字符串MD5之后的值、将到这里就特别简单了,我们有多种方式 构造这些参数,
第一种 :我们用python 自己生成这些参数
1、构造参数ts
ts = str(time.time()).replace('.', '')[0:13]
2、构造参数salt
salt = ts + str(random.randint(0, 10))
3、构造参数bv
bv = hashlib.md5('{}'.format( '你的浏览器标识').encode(encoding='UTF-8')).hexdigest()
4、构造参数 sign
sing = hashlib.md5(
'{}'.format("fanyideskweb" + str(word) + salt + "Nw(nmmbP%A-r6U3EUn]Aj").encode(encoding='UTF-8')).hexdigest()
好了构造完成我们启动程序 试试效果:
哈哈哈非常简单的翻译程序就这样写好了,那么这样的程序我们适用不方便啊,借助tornado 异步框架在我本地访问 http://localhost:33863/index 然后输入想翻译的内容我们打造可视化在线翻译程序先上效果图:
python文件 打包成exe 文件非常简
首先安装Pyinstaller
pip install Pyinstaller
第二步:
win +R 输入 CMD
然后进到 python 文件 所在目录
执行 Pyinstaller -F xxx.py
然后py文件同级目录下 会出现 如下文件夹,打卡即可看到 exe可执行文件。
由于涉及到网易在线翻译网站、安全问题代码就不全部贴出来了,如果想要完整代码或者想要exe 可执行翻译程序的评论区留下邮箱。