使用javascript从脚本标记中提取字符串
如何提取脚本标记中存在的所有字符串。我想提取每个字符串,并找出是否存在任何外壳代码。但是javascript在声明字符串时使用了几种方法,例如字符串可以使用javascript从脚本标记中提取字符串,javascript,string,Javascript,String,如何提取脚本标记中存在的所有字符串。我想提取每个字符串,并找出是否存在任何外壳代码。但是javascript在声明字符串时使用了几种方法,例如字符串可以 var y="Some text"; var x1 = "3+4"; eval("\144\157\143\165\155\145\156\164"); //string given in eval(); 它可以是串联格式 var x1 = "te ActiveX Co"; var x2 = "ntrol"; var x3 = x1 +
var y="Some text";
var x1 = "3+4";
eval("\144\157\143\165\155\145\156\164"); //string given in eval();
它可以是串联格式
var x1 = "te ActiveX Co"; var x2 = "ntrol"; var x3 = x1 + x2;
var x4 = "Execu" + x3;
如何使用简单的JavaScript代码识别每个字符串,即使它是在eval()或document.write()中定义的。这是一个非常复杂的问题,没有简单的解决方案 您可以使用ECMAScript语言的a和BNF定义(当然您可以在web上的某个地方找到它)从目标源代码中提取字符串
[Edit]由于链接的解析器生成器是用JavaScript编写的,并且支持web浏览器作为平台,因此您可以生成自定义ECMAScript解析器,将其嵌入页面,并获取所有嵌入的脚本源代码(例如
$('script').map(function(){return$(this).text();})
)。请注意,您的自定义解析器可以简单地回显解析后的字符串,例如通过console.log(…)
这是一个非常复杂的问题,没有简单的解决方案
您可以使用ECMAScript语言的a和BNF定义(当然您可以在web上的某个地方找到它)从目标源代码中提取字符串
[Edit]由于链接的解析器生成器是用JavaScript编写的,并且支持web浏览器作为平台,因此您可以生成自定义ECMAScript解析器,将其嵌入页面,并获取所有嵌入的脚本源代码(例如
$('script').map(function(){return$(this).text();})
)。请注意,您的自定义解析器可以简单地通过console.log(…)
等方式回显解析后的字符串,这里有一个提示-这就是JavaScript解释器所做的…可能重复我不知道如何像您的示例中那样在串联字符串中搜索特定内容,因为(如您的示例中)变量可以按任何顺序声明,可以连接到循环中,也可以作为数组的元素与.join()
等连接。甚至可以使用通过Ajax检索的值设置变量。您要求提供“简单”代码,但我认为这根本不可能,更不用说简单的代码了。@shareef我想要脚本标记中的字符串,而不是字符串中的脚本标记。这里有一个提示-这就是JavaScript解释器所做的…可能重复我不知道如何在连接字符串中搜索特定内容,就像在您的示例中一样,因为(就像在您的示例中)变量可以按任何顺序声明,可以连接到循环中,也可以作为数组的元素与.join()
等连接。甚至可以使用通过Ajax检索的值设置变量。您要求提供“简单”代码,但我认为这根本不可能,更不用说简单代码了。@sharef我想要脚本标记中的字符串,而不是字符串中的脚本标记。如何将此解析器添加到javascriptI我正在阅读Js/CC解析器用户手册。但是,他们要求安装解析器的事情是这样的。但是有没有一种方法可以让我在脚本中包含.js文件,比如
,然后执行上述函数并获得结果。@user1335906:我还没有下载js/CC发行版,但是如果必须安装解析器生成器本身,并且只有生成的解析器才能作为脚本包含在web中,我不会感到惊讶页你必须弄清楚,我怎样才能把这个解析器添加到我的javascriptI中我正在阅读Js/CC解析器用户手册。但是,他们要求安装解析器的事情是这样的。但是有没有一种方法可以让我在脚本中包含.js文件,比如
,然后执行上述函数并获得结果。@user1335906:我还没有下载js/CC发行版,但是如果必须安装解析器生成器本身,并且只有生成的解析器才能作为脚本包含在web中,我不会感到惊讶页你得弄清楚。