利用Python执行js

爬虫中会经常碰到JS加密,当我们找到他加密的JS代码之后我们需要获取它的返回值,python虽然可以模仿js写一个python版本的加密,但是这样有点费时间,也有点费头发~

安装PyexecJS

注意:这块需要一个执行js的环境,我本地装的是NodeJS

pip install pyexecjs

执行JS

举一个例子如下:

import execjs
js = execjs.compile(''' function genpvid() {
var a = (new Date).getTime();
var b = "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g, function(b) {
var c = (a + 16 * Math.random()) % 16 | 0;
return a = Math.floor(a / 16),
("x" == b ? c : 3 & c | 8).toString(16)
});
return b
}''')
result = js.call('genpvid') #call里面的参数第一个是js函数名称,如果要执行的js有参数,后面跟上参数就可以,如js.call('getpvid',2,3)这样
print(result)

结尾

这个的缺点是需要执行JS的环境,如果不想安装nodejs,可以试试另一个库PyV8/js2py(js2py将 JS 代码直接转译成 Python 代码)

最新文章

  1. linux批量复制或删除同命名规则的文件
  2. 利用FPGA加速实现高性能计算
  3. qq2440启动linux后插入u盘出现usb 1-1: device descriptor read/64, error -110,usb 1-1: device not accepting address 8, error -110
  4. LeetCode-96. Unique Binary Search Trees
  5. iOS 8安装教程图解
  6. 解读ECMAScript 6箭头函数
  7. MVP学习笔记——参考Google官方demo
  8. 使用GDAL库中的RPC校正问题
  9. 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
  10. (83)Wangdao.com第十七天_JavaScript 定时器
  11. Java8 方法引用
  12. leetcode32
  13. u-boot移植(十三)---代码修改---裁剪及环境变量 一
  14. [umbraco] 数据结构
  15. 【Android】8.4 让主题自适应不同的Android版本
  16. 404 Note Found -选题报告
  17. java FileI(O)nputStream为什么比BufferedI(O)utputStream慢?
  18. .Net Remoting和Web Service大比拼
  19. 查看Linux系统资源占用
  20. next.js 简单使用

热门文章

  1. Python 绘图 - Bokeh 柱状图小试(Stacked Bar)
  2. Navicat for MySQL12破解
  3. Excel之在单元格中生成随机密码
  4. opt目录
  5. 微信公众号 H5页面 支付注意细节
  6. Java基础(五):数组
  7. Posix线程编程指南(4)
  8. LeetCode-最长回文串
  9. Netty源码分析一<序一Unix网络I/O模型简介>
  10. Jmeter中使用MD5方法