【Python】使用PyExecJS库出现UnicodeDecodeError和AttributeError报错的解决方案

345 阅读1分钟

简介

js逆向过程中,通过execjs执行JavaScript代码时,可能出现此报错。

报错展示

UnicodeDecodeError: 'gbk' codec can't decode byte 0xb9 in position 757: illegal multibyte sequence
AttributeError: 'NoneType' object has no attribute 'replace'

image.png

解决方案

一、修改源码(不推荐)

步骤1: ctrl+鼠标左键,进入源码

image.png

步骤2: 滚轮向上滑动(疯狂向上),找到 init,修改encoding值,改为'utf-8'

修改前 image.png 修改后 image.png

二、添加代码(推荐)

在引入execjs前加入以下代码

# functools是python的标准库,直接引用就行了,无需安装。
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

错误示范
image.png

正确示范
image.png