检测WebBrowser控件

8

有没有办法判断我的网站是否被WebBrowser控件实例访问?是否可以通过用户代理与PHP进行识别?或者使用一些JavaScript技巧?还是从服务器端来看,它与常规的IE完全相同?


这就是IE。据我所知,这完全是相同的代码。 - John Saunders
1
“Internet Explorer” 基本上是一个围绕着 Web 浏览器控件的简单用户界面。 - Anon.
根据这个答案这篇较新的文章,WebBrowser控件在其用户代理字符串中显示MSIE 7.0。我认为这与实际的IE7浏览器或版本7兼容模式下的更近期的IE浏览器没有区别。 - ConnorsFan
2个回答

4

当任何内容被分配给window.external时,似乎会引发特定的错误。因此,检查可以是以下内容:

const isWebBrowserControl = () => {
  try {
    window.external = window.external
    return false
  } catch (error) {
    if (error.message === 'I don\'t remember this. Some specific error message.') {
      return true
  }
}

这是一个可能会有“破坏性”的检查,但我真的不觉得会引起任何问题。

1
typeof(window.external.AddSearchProvider) 也可能是独特的。 - EricLaw

3

这只是一个愚蠢的想法,但你可以比较window.outerHeightwindow.innerHeight,测量IE预期差异,如果不是,则为WebBrowser Control?

这非常hacky,但对于大多数情况可能有效。还有其他一些方法可以尝试,这些方法在IE中以某种方式工作,但在WebBrowser Control中可能不起作用。

例如:

  • 下载文件
  • 打开新窗口/选项卡

我不认为这可以靠谱。outerHeightinnerHeight 之间的差异受用户偏好影响。显示或隐藏书签栏或菜单将影响差异。(在 IE 中,我数了 4 个容易访问的选项会影响差异)。打开或关闭调试面板也会影响它。缩放也会影响它。(我没有预料到,但是就是这样。)然后还有像一般 UI 偏好之类的东西。使用与默认主题不同的主题可能会改变两个数字之间的差异。 - Louis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接