其几天在爬取百度信用的商标图片的过程中,有一个tot参数是根据页面返回的动态tk值然后运行js加密后生成的结果。
所以需要先获取该段js后在用execjs运行该段js对获取的数据进行加密,就能获取想要的数据了。
如下图:
tk_func就是使用正则匹配,从源页面中获取对应的内容。
而第二个横线中的tk就是使用execjs运行该段js的方式。
如何正确的安装和使用该包呢?
请点击:https://blog.youkuaiyun.com/xc_zhou/article/details/80952155
更新(2019-05-21):
前段时间在搞js破解,同事电脑上能用execjs运行出结果的,在自己电脑上却会出现错误。
我们python 版本一致,execjs版本一致,运行环境一致(win10),但就是我报错,他OK,然后我突然想起来execjs运行时有环境依赖的。如果没装其他的js运行环境,那么win10下默认的是JSscrip,而同事最近在做app模拟,因此装了不少东西,所以,你需要在python中运行:execjs.get().name 来查看自己的execjs依赖环境。
什么都没有装,JSscrip
装了node.js,提示 Node.js (V8)
下面是源码中给出,可运行execjs的依赖环境:
PyV8 = “PyV8”
Node = “Node”
JavaScriptCore = “JavaScriptCore”
SpiderMonkey = “SpiderMonkey”
JScript = “JScript”
PhantomJS = “PhantomJS”
SlimerJS = “SlimerJS”
Nashorn = “Nashorn”
ps:装好之后要记得重启pycharm之类的py工具,因为你不重启,他默认的依赖还是JSscrip
然后在依赖环境也成功相同之后,我还是运行不了。尼玛的!为什么?
总是提示我编码报错。可我同事运行时正确的啊。
难道是js脚本编码有问题?
然后用notepad打开,utf-8没问题。
不信邪的我把它随便改了个格式,又改回utf-8.保存运行。
还是编码报错,但这次提示的是乱码错误,并给了准确的报错位置
点进去一看,中文注释的锅。。。遂,删除所有中文注释。
完美运行。
撒花~