1. 前期准备

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加解密相关推荐

  1. JS解密入门案例:python有道翻译JS解密

    前言 嗨喽!大家好呀,这里是魔王~ 课程亮点: 系统分析网页结构 动态数据抓包演示 json数据解析 JS解密 环境介绍: python 3.8 pycharm >>> 需要安装no ...

  2. python google翻译,python利用google翻译方法实例(翻译字幕文件)

    英文字幕确实让人头疼,因此,花了一天专门研究,用python实现了比较简单的翻译代码.仅有几十行 首先加载模块 pip uninstall googletrans git clone https:// ...

  3. 翻译pdf中的英文 python_浅谈python实现Google翻译PDF,解决换行的问题

    我们复制PDF到Google翻译时,总是会出现换行的情况,如果自己手动去除,那就太麻烦了. 那么用Python就可以解决,复制到粘贴板以后,Python程序自动可以把\n换成空格,然后我们就可以复制到 ...

  4. 深入学习POST + JS加解密

    <深入学习POST + JS加解密> 小肩膀post js百例高端js解密 链接:https://pan.baidu.com/s/1i9003bTe8iVjLlnMAVa0PQ 提取码:h ...

  5. 10086登录JS加解密充值讲解

    系列文章目录 1.10086登录JS加解密 2.10086跳转Cookies存活 3.如何请求充值话费 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 ...

  6. python爬虫英文翻译_Python爬虫实现翻译功能

    前言 学了这么久的python理论知识,需要开始实战来练手巩固了. 准备 首先安装爬虫urllib库 pip install urllib 获取有道翻译的链接url 需要发送的参数在form data ...

  7. python爬虫---百度翻译的爬取及可视化

    实现的效果 可视化界面由于作者的审美有限,所以有点丑,但是还是讲究可以看一下,主要的功能没有改变,博友们也可以根据自己的喜好改变一下. 原理 这里我们使用百度翻译网页,对上面的翻译内容进行爬取,至于音 ...

  8. Python 爬虫:获取 JS 动态内容——应用宝搜索应用

      本内容主要介绍如何获取网页中 JS 动态生成的内容. 文章目录 1.1 Ajax 异步加载生成网页内容 1.2 从网页响应中找到 JS 脚本返回的数据 1.2.1 找到 JS 请求的数据接口 1. ...

  9. delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

最新文章

  1. Python-接口自动化(二)
  2. 浅谈三级分销系统开发对企业的作用
  3. 域与活动目录(下) windows server 2008
  4. AT3968-[AGC025E] Walking on a Tree【构造】
  5. ROS入门_1.10 理解ROS服务和参数
  6. 微信小程序插件内页面跳转和参数传递
  7. Oracle索引简单介绍与示例
  8. mysql5.7的存储过程_MySql5.7命令笔记(三)mysql存储过程命令
  9. Python 语言程序设计(5-1)函数的定义与使用
  10. Binder学习笔记(九)—— 服务端如何响应Test()请求 ?
  11. 复化梯形公式求二重积分matlab源码
  12. 证件照素材大合集(全网最全版本,免费分享)
  13. 广西南宁机器人比赛_缤纷校园|2018年广西中小学电脑机器人竞赛开赛 南宁学子大显身手...
  14. STC12LE5612AD芯片使用心得(五)定时器
  15. 给小朋友讲故事——第一次世界大战(音频)
  16. 经典语录 - 人生十悟
  17. 如何指定火狐浏览器打开网页
  18. Java 桥接方法(Bridge Method)
  19. 漫画:位运算技巧整理汇总+一道被嫌弃的题目
  20. MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06

热门文章

  1. 不管你学的是什么专业,你都应该多少懂些管理学的东西之【罗森塔尔效应】【虚假同感偏差】...
  2. docker-compose up和restart的区别
  3. ssm 网上零食商城
  4. Oracle各版本下载集合
  5. WebService CXF --- 传输文件MTOM
  6. 云计算之路-试用Azure:拐弯抹角的负载均衡
  7. 搜索引擎的数据库设计
  8. 目录-《Matlab/Simulink与控制系统仿真》程序指令总结
  9. php seo收录统计,SEO 统计算法
  10. 路是一步一步走出来的