pyv8是一个强大的Python扩展,提供了Python与Google V8 JavaScript引擎之间的桥梁。它允许您在Python中执行JavaScript代码,并实现Python与JavaScript之间的无缝交互。
pyv8主要是为了js逆向时补环境提供更多底层支持,为一比一模拟chromium内置原型对象提供基础api。
- 在Python中执行JavaScript代码
- 将Python对象暴露给JavaScript环境
- 访问和操作JavaScript对象
- 支持JavaScript Promise
- 支持JavaScript TypedArray
- 内置调试工具(DevTools)
- 支持JavaScript异常处理
- Python 3.10 或更高版本
- 支持的平台:Windows, Linux
pip install git+https://github.com/ConlinH/pyv8
- 克隆仓库:
git clone https://github.com/ConlinH/pyv8.git
cd pyv8
- 使用pyproject.toml构建和安装(推荐):
# 开发模式安装
pip install -e .
# 或者直接安装
pip install .
- 检测是否安装成功
python -c "from pyv8 import _pyv8; print(_pyv8.v8_version())"
4.卸载:
pip uninstall pyv8
项目使用tox进行自动化测试,支持多个Python版本:
# 安装tox
pip install tox
# 运行所有测试环境
tox
import pyv8
class Window: pass
# 创建一个JavaScript执行上下文
context = pyv8.Context(Window)
# 执行JavaScript代码
result = context.exec_js("1 + 2")
print(result) # 输出: 3
# 执行更复杂的JavaScript代码
result = context.exec_js("""
function add(a, b) {
return a + b;
}
add(5, 7);
""")
print(result) # 输出: 12
import pyv8
class Window: pass
def hello(name):
return f"Hello, {name} from Python!"
context = pyv8.Context(Window())
context.expose(hello)
result = context.exec_js("hello('World')")
print(result) # 输出: Hello, World from Python!
import pyv8
from pyv8 import start_devtools
class Window:
__v8_global_this__ = True
# 执行JavaScript代码
def callback(ctx):
ctx.exec_js("""
function test() {
console.log('Testing DevTools');
debugger; // 这将在DevTools中触发断点
return 'Done';
}
test();
""")
context = pyv8.Context(Window())
# 启动DevTools调试服务器
start_devtools(context, callback=callback, port=9005)
# 控制台会输出DevTools URL,可以在Chrome浏览器中打开进行调试
查看测试用例
- 作者:conlin
- 邮箱:[email protected]
- GitHub:https://github.com/ConlinH/pyv8