判断请求的文件是否为Javascript

时间:2018-07-30 17:02:40

标签: javascript

我有一个程序可以记录网站在页面加载过程中发出的每个GET / POST请求。我想要一个个地处理这些请求,执行它们,然后确定返回的文件是否为Javascript。鉴于它不会以.js结尾(由于这样的脚本,它是在一分钟前从google.com中抽出的),我该如何解析从请求中获取的文件并确定它是否是Javascript文件?

谢谢!

编辑: 得到一个假阳性比一个假阴性更好。也就是说,我宁愿在JS列表中包含一些非JS,而不是从列表中切出一些真实的JS

2 个答案:

答案 0 :(得分:1)

您引用的javascript链接没有内容类型,也没有js扩展名。 如果可以执行任何文本文件,则可以将其视为javascript,这会使从头开始检测非常困难。我想到两种方法。

  1. 对文件内容运行linter。如果错误是语法错误或解析错误,则不是javascript。如果没有语法错误或解析错误,则应将其视为javascript

  2. 为文件内容解析AST(抽象语法树)。一个javascript文件将解析没有错误。应该有许多AST库可用。我尚未使用JS AST,因此无法推荐其中任何一个,但快速搜索应会为您提供一些选择。

我不确定,但是在进行语法检查之前,linter可能还会运行AST。在这种情况下,运行AST似乎是一个更轻松的选择。

答案 1 :(得分:0)

最简单的方法是检查是否有通过URI识别javascript文件的内容,因为替代方法要重得多。但是由于您说这不是一个选择,所以您始终可以使用启发式工具检查每个文件内容的语法。您还可以检查响应标头的内容类型。