python调用js代码解决Google翻译的tk参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python调用js代码解决Google翻译的tk参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2072字,纯文字阅读大概需要3分钟。
内容图文
![python调用js代码解决Google翻译的tk参数](/upload/InfoBanner/zyjiaocheng/636/f0ceb2db8f6e418da3959617f17972a8.jpg)
一、背景
因为这次需要用到一下Google翻译,对英文翻译成中文,通过对Google翻译的分析,发现Google翻译里面有一个很重要参数tk。这个参数在每次翻译之前都会重新生成,只有校验通过了才可以将翻译的结果返回。而这个参数是使用js来生成了的。
二、解决
通过查阅相关的资料,在国外大佬的个人博客里面找到了这个参数的解析,国内也有很多大佬解析,这里就简单记录一下,使用python的方法去调用。
1.1 安装PyExecJS
通过下面的指令完成PyExecJs的安装,这样就可以在python中执行js代码。
pip install PyExecJS
1.2 代码封装
通过下面的代码对输入参数的js,进行混淆解析,返回生成的tk值,直接引用即可,后面使用js.getTk方法就可以进行解析了。
import execjs
class 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 getTk(self, text): return self.ctx.call("TL", text) js = Py4Js()
1.3 分析
通过上面的代码可以看到通过execjs.compile对代码进行编译,使用call函数进行调用,第一个为调用的函数名,第二个为参数。这样就可以将python中的参数传递给js,同时返回执行的结果。剩下的内容就可以按照正常的爬虫请求就可以完成了。
三、总结
网上也有很多资料,这里简单做个记录对以后的复习有好处。找到那个blog地址就把地址补上。
内容总结
以上是互联网集市为您收集整理的python调用js代码解决Google翻译的tk参数全部内容,希望文章能够帮你解决python调用js代码解决Google翻译的tk参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。