python运行js问题

天不生长夜 2021-07-30 11:42:31

 

python代码

mport execjs
import os

os.environ["EXECJS_RUNTIME"] = "Node"
# print(execjs.get().name)
with open(r'cs1.js','r',encoding='utf-8') as f:
    js = f.read()
    print(js)
ct = execjs.compile(js,cwd=r'C:\Program Files (x86)\nodejs\node_modules').call("signature")
print(ct)

js代码

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
window = global;
var document = dom.window.document;


function signature(){
    return window

}

报错

Traceback (most recent call last):
  File "D:/scrapy_pro/DDD/get_sad.py", line 10, in <module>
    ct = execjs.compile(js,cwd=r'C:\Program Files (x86)\nodejs\node_modules').call("signature")
  File "D:\Python\lib\site-packages\execjs\_abstract_runtime_context.py", line 37, in call
    return self._call(name, *args)
  File "D:\Python\lib\site-packages\execjs\_external_runtime.py", line 92, in _call
    return self._eval("{identifier}.apply(this, {args})".format(identifier=identifier, args=args))
  File "D:\Python\lib\site-packages\execjs\_external_runtime.py", line 78, in _eval
    return self.exec_(code)
  File "D:\Python\lib\site-packages\execjs\_abstract_runtime_context.py", line 18, in exec_
    return self._exec_(source)
  File "D:\Python\lib\site-packages\execjs\_external_runtime.py", line 88, in _exec_
    return self._extract_result(output)
  File "D:\Python\lib\site-packages\execjs\_external_runtime.py", line 167, in _extract_result
    raise ProgramError(value)
execjs._exceptions.ProgramError: SyntaxError: 语法错误

我在python程序里写js代码,报错语法错误是什么意思?环境都配好的呀

...全文
1570 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

请问解决了吗,我好像跟你有一样的问题

天不生长夜 2021-07-30
  • 打赏
  • 举报
回复

img
程序说这个sign未定义,这个怎么补得(今日头条)

李玺 2021-07-30
  • 举报
回复
@天不生长夜 先看byted_crawler是否存在,如果存在应该是参数问题
天不生长夜 2021-07-30
  • 举报
回复
@李玺 window.byted_acrawler 返回为none
天不生长夜 2021-08-02
  • 举报
回复
@天不生长夜 但是我用你文章中的js代码,执行就能返回最终signature
天不生长夜 2021-07-30
  • 打赏
  • 举报
回复

难道是环境的问题

李玺 2021-07-30
  • 举报
回复
@天不生长夜 有可能
李玺 2021-07-30
  • 打赏
  • 举报
回复

你的报错是语法错误。

我在本地运行你发的 js 没有这个问题


import execjs
import os

js = '''
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
window = global;
var document = dom.window.document;
function signature(){
    return 1
}
'''
ct = execjs.compile(js,cwd=r'').call("signature")
print(ct)
Frida是一款免费的,基于Python和JavaScript来实现的,面向开发人员、逆向工程师和安全研究人员的动态检测工具包。 Frida拥有一套全面的测试套件,不但调试效率极高,而且在广泛的使用中经历了多年严格的测试。 尤其是,移动应用安全测试和服务巨头NowSecure对齐钟爱有加,在NowSecure内部,安全人员通过Frida这个工具套装,已经完成对大量的移动应用程序大规模深度的安全分析测试。目前依然在该公司的安全测试中扮演重要的角色。 基于Python和JavaScript的Frida,天生就是跨平台的动态调试工具,不但可以运行在Windows、Linux、macOS之上,而且还可以调试Windows应用程序、Linux应用程序,macOS、iOS、Andriod和QNX等几乎全平台的应用程序。可以说,一旦掌握Frida这套工具,就可以在全平台,对全平台的应用程序进行动态调试和分析。 Frida使用极其方便,在使用过程中,只需将你编写的JavaScript脚本通过Frida自身的工具注入到目标进程中,就可以HOOK任何功能,其中包括但不限于监视加密API或跟踪应用程序关键代码等。在使用过程中,无需知道被“研究”程序的源代码。 尤其是可以一边编辑JavaScript脚本,一边运行JavaScript脚本的功能对于调试分析来说极为友好。只需“保存”正在编辑的JavaScript脚本,就立即就能看到该脚本执行的结果,全称无需其它人工介入,也无需重新启动被“研究”的应用程序,极大地简化了分析流程,同时也极大地提高了工作效率。因此,得到了众多安全分析人士的青睐。 本课程从最基本的调试环境搭建开始,基于经典的Windows“扫雷”游戏的动态调试分析,编码等,循序渐进演示Firda在分析调试Windows应用程序中基本使用方法和技巧。拥有这些知识储备之后,在加上官方的参考文档,你就可以轻松地将这些知识“迁移”至分析和调试其他平台的应用程序。 课程资料,请看第一课中github链接。

25,344

社区成员

发帖
与我相关
我的任务
社区描述
爬虫逆向技术交流社区,有问题可在此发布动态,不限开发语言不限框架技术的综合社区。
社区管理员
  • 考古学家lx(李玺)
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

一个综合的爬虫逆向技术交流社区

试试用AI创作助手写篇文章吧