企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Python中执行JS代码,通常用两个库:js2py,pyexecjs。当网页使用 js 加密时我们可以使用这些库来分析 js 的实现逻辑,获取加密信息。 <br/> js2py是纯python实现的库,用于在python中运行js代码,本质上是将js代码翻译成python代码来执行。 <br/> 安装js2py库:`pip install js2py` <br/> **1. 在python中执行js代码** ```python import js2py log = js2py.eval_js('console.log("hello world")') # 'hello world' print(type(log)) # <class 'NoneType'> add = js2py.eval_js('function add(x, y){return x+y}') print(type(add)) # <class 'js2py.base.JsObjectWrapper'> print(add(10, 20)) # 30 # 也可以定义变量 add.n = {'class': 'Hello World!'} print(type(add.n)) # <class 'js2py.base.JsObjectWrapper'> print(add.n) # {'class': 'Hello World!'} ``` 或者: ```python import js2py # 1. 创建js环境 context = js2py.EvalJs() # 2. 定义js函数 add1 = context.execute('function add(x, y){return x+y}') print(add1) # None # 3. 调用js函数 result = context.add(10, 20) print(result) # 30 # 3. 可以定义变量 context.n = {'class': 'Hello World!'} print(type(context.n)) # <class 'js2py.base.JsObjectWrapper'> print(context.n) # {'class': 'Hello World!'} ``` <br/> **2. js代码翻译** ```python """ @Date 2021/3/19 """ import js2py # 将js代码翻译成Python脚本 print(js2py.translate_js("console.log('hello world')")) # 将js文件翻译为python脚本 js2py.translate_file("test.js", 'test.py') ``` <br/> **3. 在js中调用Python函数** ```python """ @Date 2021/3/18 """ import js2py def add(x, y): return x+y # 1. 将python翻译成js context = js2py.EvalJs({"add": add}) # 2. 调用函数 result = context.add(10, 20) print(type(result)) # <class 'int'> print(result) # 30 # 3. 或者通过 eval 函数调用 result2 = context.eval('add(10, 20)') print(result2) # 30 ``` <br/> **4. 在js中调用Python模块** ```python """ @Date 2021/3/18 """ import js2py # 1. 使用pyimport导入Python的requests库 js = """ pyimport requests console.log('导入成功'); var response = requests.get('http://www.baidu.com') console.log(response.url); console.log(response.text); """ # 2. 执行js代码 js2py.eval_js(js) ```