python爬虫 google翻译 js加解密
- 前期准备
pip3 install PyExecJS requests
PyExecJS用于执行js代码
requests用于发起网络请求
2.核心代码,可直接复制粘贴(引用代码在后面)
import requests, json, execjs # pip3 install PyExecJS
from urllib.parse import quotedebug = Falseclass Py4Js:def __init__(self):self.ctx = execjs.compile(""" function TL(a) { var k = ""; var b = 406644; var b1 = 3293161072; var jd = "."; var $b = "+-a^+6"; var Zb = "+-3^+b+-f"; for (var e = [], f = 0, g = 0; g < a.length; g++) { var m = a.charCodeAt(g); 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = m >> 18 | 240, e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, e[f++] = m >> 6 & 63 | 128), e[f++] = m & 63 | 128) } a = b; for (f = 0; f < e.length; f++) a += e[f], a = RL(a, $b); a = RL(a, Zb); a ^= b1 || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + jd + (a ^ b) }; function RL(a, b) { var t = "a"; var Yb = "+"; for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2), d = d >= t ? d.charCodeAt(0) - 87 : Number(d), d = b.charAt(c + 1) == Yb ? a >>> d: a << d; a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d } return a }""")def get_tk(self, text):return self.ctx.call("TL", text)def translate(js, text, tl='zh-CN'):"""tl为要翻译的语言de:德语ja:日语sv:瑞典语nl:荷兰语ar:阿拉伯语ko:韩语pt:葡萄牙语zh-CN:中文简体zh-TW:中文繁体"""header = {'authority': 'translate.google.cn','method': 'GET','path': '','scheme': 'https','accept': '*/*','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9,ja;q=0.8',# 'cookie': '_ga=GA1.3.110668007.1547438795; _gid=GA1.3.791931751.1548053917; 1P_JAR=2019-1-23-1; NID=156=biJbQQ3j2gPAJVBfdgBjWHjpC5m9vPqwJ6n6gxTvY8n1eyM8LY5tkYDRsYvacEnWNtMh3ux0-lUJr439QFquSoqEIByw7al6n_yrHqhFNnb5fKyIWMewmqoOJ2fyNaZWrCwl7MA8P_qqPDM5uRIm9SAc5ybSGZijsjalN8YDkxQ','cookie': '_ga=GA1.3.110668007.1547438795; _gid=GA1.3.1522575542.1548327032; 1P_JAR=2019-1-24-10; NID=156=ELGmtJHel1YG9Q3RxRI4HTgAc3l1n7Y6PAxGwvecTJDJ2ScgW2p-CXdvh88XFb9dTbYEBkoayWb-2vjJbB-Rhf6auRj-M-2QRUKdZG04lt7ybh8GgffGtepoA4oPN9OO9TeAoWDY0HJHDWCUwCpYzlaQK-gKCh5aVC4HVMeoppI','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36','x-client-data': 'CKi1yQEIhrbJAQijtskBCMG2yQEIqZ3KAQioo8oBCL+nygEI7KfKAQjiqMoBGPmlygE='}url = build_url(text, js.get_tk(text), tl)res = []try:r = requests.get(url, headers=header)result = json.loads(r.text)r.encoding = "UTF-8"if debug:print(r.url)print(r.headers)print(r.request.headers)print(result)res = result[0]if res is None:if result[7] is not None:# 如果我们文本输错,提示你是不是要找xxx的话,那么重新把xxx正确的翻译之后返回try:correct_text = result[7][0].replace('<b><i>', ' ').replace('</i></b>', '')if debug:print(correct_text)correct_url = build_url(correct_text, js.get_tk(correct_text), tl)correct_response = requests.get(correct_url)correct_result = json.loads(correct_response.text)res = correct_result[0]except Exception as e:if debug:print(e)res = []except Exception as e:res = []if debug:print(url)print("翻译" + text + "失败")print("错误信息:")print(e)finally:return resdef build_url(text, tk, tl='zh-CN'):"""需要用转URLEncoder:param text::param tk::param tl::return:"""# 改识别语言的地方为下面sl=auto,识别出来的语言为tl字段return 'https://translate.google.cn/translate_a/single?client=webapp&sl=auto&tl=' + tl + '&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&source=btn&ssel=0&tsel=0&kc=0&tk=' \+ str(tk) + '&q=' + quote(text, encoding='utf-8')
3.如何引用
js = Py4Js()
txt = 'test'
# txt想要翻译的内容 现在是默认识别语言翻译成中文 修改tl参数即可
txt=translate(js, txt)[0][0]
print(txt)
python爬虫 google翻译 js加解密相关推荐
- JS解密入门案例:python有道翻译JS解密
前言 嗨喽!大家好呀,这里是魔王~ 课程亮点: 系统分析网页结构 动态数据抓包演示 json数据解析 JS解密 环境介绍: python 3.8 pycharm >>> 需要安装no ...
- python google翻译,python利用google翻译方法实例(翻译字幕文件)
英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googletrans git clone https:// ...
- 翻译pdf中的英文 python_浅谈python实现Google翻译PDF,解决换行的问题
我们复制PDF到Google翻译时,总是会出现换行的情况,如果自己手动去除,那就太麻烦了. 那么用Python就可以解决,复制到粘贴板以后,Python程序自动可以把\n换成空格,然后我们就可以复制到 ...
- 深入学习POST + JS加解密
<深入学习POST + JS加解密> 小肩膀post js百例高端js解密 链接:https://pan.baidu.com/s/1i9003bTe8iVjLlnMAVa0PQ 提取码:h ...
- 10086登录JS加解密充值讲解
系列文章目录 1.10086登录JS加解密 2.10086跳转Cookies存活 3.如何请求充值话费 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 ...
- python爬虫英文翻译_Python爬虫实现翻译功能
前言 学了这么久的python理论知识,需要开始实战来练手巩固了. 准备 首先安装爬虫urllib库 pip install urllib 获取有道翻译的链接url 需要发送的参数在form data ...
- python爬虫---百度翻译的爬取及可视化
实现的效果 可视化界面由于作者的审美有限,所以有点丑,但是还是讲究可以看一下,主要的功能没有改变,博友们也可以根据自己的喜好改变一下. 原理 这里我们使用百度翻译网页,对上面的翻译内容进行爬取,至于音 ...
- Python 爬虫:获取 JS 动态内容——应用宝搜索应用
本内容主要介绍如何获取网页中 JS 动态生成的内容. 文章目录 1.1 Ajax 异步加载生成网页内容 1.2 从网页响应中找到 JS 脚本返回的数据 1.2.1 找到 JS 请求的数据接口 1. ...
- delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨
多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...
最新文章
- Python-接口自动化(二)
- 浅谈三级分销系统开发对企业的作用
- 域与活动目录(下) windows server 2008
- AT3968-[AGC025E] Walking on a Tree【构造】
- ROS入门_1.10 理解ROS服务和参数
- 微信小程序插件内页面跳转和参数传递
- Oracle索引简单介绍与示例
- mysql5.7的存储过程_MySql5.7命令笔记(三)mysql存储过程命令
- Python 语言程序设计(5-1)函数的定义与使用
- Binder学习笔记(九)—— 服务端如何响应Test()请求 ?
- 复化梯形公式求二重积分matlab源码
- 证件照素材大合集(全网最全版本,免费分享)
- 广西南宁机器人比赛_缤纷校园|2018年广西中小学电脑机器人竞赛开赛 南宁学子大显身手...
- STC12LE5612AD芯片使用心得(五)定时器
- 给小朋友讲故事——第一次世界大战(音频)
- 经典语录 - 人生十悟
- 如何指定火狐浏览器打开网页
- Java 桥接方法(Bridge Method)
- 漫画:位运算技巧整理汇总+一道被嫌弃的题目
- MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06