检查用户是否安装了第三方Chrome扩展程序

格雷格

我目前正在尝试检测用户是否安装了某个Chrome扩展程序。Chrome扩展程序不是我自己的,我没有源代码。我已经在很多帖子中尝试过方法,但是它们都失败了。下面详细介绍了我尝试过的方法以及失败的原因。

当执行时,这导致“无法读取未定义的属性连接”:

var myPort=chrome.extension.connect('idldbjenlmipmpigmfamdlfifkkeaplc', some_object_to_send_on_connect);

尝试按以下方式尝试加载扩展资源,以测试扩展资源是否存在,但在浏览器中转到该URL会导致“找不到您的文件” Chrome错误页面(请注意,我通过转到C:\ Users \\找到了此路径Windows本地计算机上的AppData \ Local \ Google \ Chrome \ User Data \ Default \ Extensions \ idldbjenlmipmpigmfamdlfifkkeaplc \ 1.0.0.1_0 \):

chrome-extension://idldbjenlmipmpigmfamdlfifkkeaplc/1.0.0.1_0/icon_16.png

使用Chrome管理,但执行时会导致控制台错误“无法读取未定义的属性”

chrome.management.get("idldbjenlmipmpigmfamdlfifkkeaplc", function(a){console.log(a);});

我遇到的大多数其他答案似乎都涉及由试图检查扩展名的同一人编写的扩展名。

可汗

假设您需要一个网站

connect/message方法表示该扩展名在您希望与其建立联系的来源列表中专门列出了您的网站除非您自己编写此扩展名,否则这不太可能,因为这不能是通配符域。

从Web上下文引用扩展名内的文件将 返回404模拟网络错误,除非扩展程序将其声明为可通过Web访问该方法以前在2012年之前就可以使用,但是Google将该方法作为一种指纹识别方法予以关闭-现在,扩展程序必须显式列出可以访问的资源。您具体提到的扩展名未列出任何可通过Web访问的文件,因此此路由也已关闭。

chrome.management是扩展API;网站根本无法使用它。

最后,如果扩展程序的内容脚本以某种方式修改了网页的DOM,则您可能会检测到这些更改。但这不是很可靠,因为内容脚本可以更改其逻辑。同样,在您的特定情况下,扩展程序侦听DOM事件,但无论如何都无法明确接收到该事件-因此此路由已关闭。

请注意,通常,您无法确定内容脚本代码是否与您的脚本一起运行,因为它在隔离的上下文中运行

总而言之,这个问题没有神奇的解决方案。扩展必须协作才能被发现,您不能绕过它。

假设您需要其他扩展程序

connect/message方法列入白名单的来源默认为所有扩展名;但是,要使其正常工作,目标扩展程序需要侦听onConnectExternalonMessageExternal事件,这是不常见的。

可通过Web访问的资源对来自其他扩展名的访问具有相同的限制,因此情况并不更好。

可以使用自己的内容脚本查看页面的更改,但是同样可能没有可观察的页面,并且您不能依赖那些始终相同的更改。

与扩展程序网页交互类似,来自不同扩展程序的内容脚本在隔离的上下文中运行,因此不可能直接“捕获”正在运行的代码。

chrome.management扩展程序中的API是检测已安装的第三方扩展程序的唯一保证方法,但请注意,它需要"management"经过许可并带有可怕的警告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查是否安装了第三方应用程序?

Chrome扩展程序和Django:验证是否允许第三方Cookie

安装程序中的“安装此第三方软件”框是什么,以及安装了哪些第三方软件?

在Pelican中安装第三方Markdown扩展

全屏截图,不带第三方扩展程序(Chrome浏览器)

获取第三方用户安装的应用程序图标

扩展第三方接口

检查用户是否安装了Chrome扩展程序

安装后允许我的Android应用程序使用第三方扩展程序/插件-低功耗蓝牙

安装了第三方python模块-仍然无法导入(Windows)

如何在Chrome上覆盖“新标签页”页面(没有第三方软件,例如扩展程序)

安卓应用程序可以由第三方扩展吗?

伪造第三方库中的扩展方法

扩展第三方库/模块的存根文件

在第三方定义文件中扩展类

Quarkus-扩展包括第三方ContainerRequestFilter

扩展第三方zend Framework 2模块

使第三方库的扩展方法过时

如何检查我的 APK 第三方库是否符合 64 位架构?

如何检查流星框架中是否通过第三方服务登录?

第三方Cookie,以检查浏览器是否默认将其阻止

霓虹灯安装-安全启动与第三方驱动程序

使用Angular-CLI安装第三方应用程序

Android第三方导致“未安装应用程序”错误

在重新安装 Ubuntu 之前备份第三方应用程序

从另一个应用程序安装第三方 APK

是否可以代表用户在我的网站上禁用第三方cookie?

通过python脚本控制第三方应用程序时等待用户输入

AppSync与用户池中的第三方应用程序令牌