Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript获取外部脚本列表(如扩展)_Javascript_Html_Browser Extension - Fatal编程技术网

JavaScript获取外部脚本列表(如扩展)

JavaScript获取外部脚本列表(如扩展),javascript,html,browser-extension,Javascript,Html,Browser Extension,是否可以获取由浏览器注入的所有脚本的列表?或者至少能以某种方式发现它们。我的意思是,在Windows上,有时会有各种各样的病毒将脚本注入飞行修改中,例如,单击操作以显示广告。我正在编写一种高级网站,因此我想提醒用户其他脚本最有可能: 当我的webapp修改基本的本机浏览器API(如document.getElement*或甚至监听器)时将崩溃 可能会使webapp不稳定,甚至崩溃 可能是性能过高 我也在谈论修改网站内容的脚本,如Ponify或XKCD数字。 我知道navigator.plugin

是否可以获取由浏览器注入的所有脚本的列表?或者至少能以某种方式发现它们。我的意思是,在Windows上,有时会有各种各样的病毒将脚本注入飞行修改中,例如,单击操作以显示广告。我正在编写一种高级网站,因此我想提醒用户其他脚本最有可能:

  • 当我的webapp修改基本的本机浏览器API(如document.getElement*或甚至监听器)时将崩溃

  • 可能会使webapp不稳定,甚至崩溃

  • 可能是性能过高

  • 我也在谈论修改网站内容的脚本,如Ponify或XKCD数字。
    我知道navigator.plugins,但它似乎不是我想要的。

    不太清楚。我的意思是你可以做一个:

    document.getElementsByTagName('script');
    
    获取所有脚本标记,并检查它们的
    src
    属性,但这并不是那么简单。可以对javascript文件发出ajax请求,然后
    eval(ajaxResult)
    执行该代码。您的浏览器无法知道代码来自何处,因为它只是一个字符串

    有很多方法可以执行javascript,并且可以清除任何跟踪,但是没有办法涵盖所有这些


    编辑:我错过了关键短语“由浏览器注入的脚本”:

    至少在Chrome中,一些扩展似乎确实注入了脚本标记。虽然他们似乎没有任何特殊的方式标记。过滤它们可能很棘手。如果您在脚本标记中添加了一个
    ,您知道应该存在该类,并且您发现一个脚本标记没有该类,那么您知道它可能是一个扩展脚本

    我也不确定扩展是否必须插入脚本标记才能在页面上执行操作。我认为它也可以通过扩展代码直接与页面交互。不过我不确定。需要更多的研究。对于不同的浏览器,这可能是不同的



    就我个人而言,我认为保护你的网站不受人们自己的浏览器扩展的影响是一件愚蠢的事情。如果有人想以奇怪的方式破坏他们自己的浏览体验,你没有责任握住他们的手。您将很难发现扩展会破坏您的一切。

    真的吗?欧欧。扩展只使用简单的脚本标记?它们在文档中可见吗?我的意思是类似于
    document.styleSheets
    的东西,它还显示由扩展附加的样式,这些扩展在文档XML中不存在,也没有自己的标记,因为例如,我在文档中只使用单个脚本标记,所有其他脚本都是由eval加载的,所以我猜扩展也不需要使用脚本标记?是扩展吗在网站js之后还是之前运行?他们是否使用与站点JS相同的上下文?因为例如,我正在删除Element.prototype.addEventListener(这个webapp有内部沙盒),所以如果扩展使用与网站相同的环境,并且它们不使用原始API的自己副本,那么它们不会对我的应用造成任何伤害。请参阅我的更新。“扩展是在网站JS之后还是之前运行?”我认为这取决于扩展的设置方式。扩展做了很多疯狂的事情,有些需要在之前运行,有些需要在之后运行。我知道。我只是想显示一些消息,以防我检测到扩展,只是为了让用户意识到,如果他的扩展会破坏某些东西,或者会导致站点出现带有错误信息弹出窗口的垃圾邮件用户界面,这不是我们的错。JS比定制CSS的问题小,实际上样式可以可靠地检测,所以我不需要超高效的脚本检查