Обнаружение управления веб-браузером

Есть ли способ узнать, обращается ли к моему сайту экземпляр управления веб-браузером? Можно ли идентифицировать его с помощью пользовательского агента w/php? Или, может быть, какой-нибудь javascript-хак? Или он на 100% идентичен обычному IE со стороны сервера?


person Ilia Choly    schedule 04.02.2010    source источник
comment
Это это IE. Это точно такой же код, насколько я знаю.   -  person John Saunders    schedule 04.02.2010
comment
Internet Explorer — это, по сути, тонкий пользовательский интерфейс вокруг элемента управления веб-браузером.   -  person Anon.    schedule 04.02.2010
comment
Согласно этому ответу и этой более поздней статьи элемент управления WebBrowser показывает MSIE 7.0 в строке пользовательского агента. Я думаю, что это не отличить от настоящего браузера IE7 или более позднего браузера IE в режиме совместимости версии 7.   -  person ConnorsFan    schedule 18.07.2017


Ответы (2)


Кажется, что возникает конкретная ошибка, когда что-либо назначается 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
  }
}

Однако это потенциально «разрушительная» проверка. Но я действительно не чувствую, что это вызовет какие-либо проблемы.

person mightyiam    schedule 24.07.2017
comment
typeof(window.external.AddSearchProvider) также, вероятно, является отличительным. - person EricLaw; 22.03.2019

Просто глупая идея, но не могли бы вы просто сравнить window.outerHeight с window.innerHeight, измерить ожидаемую разницу для IE, и если это не так, то это элемент управления WebBrowser?

Это чертовски хакерски, но может работать в большинстве случаев. Есть и другие вещи, которые вы могли бы попытаться сделать, вещи, которые будут работать определенным образом в IE, но, вероятно, не будут работать в элементе управления WebBrowser.

Например:

  • скачать файл
  • открыть новое окно/вкладку
person Lux    schedule 20.07.2017
comment
Я не понимаю, как это может быть надежным. Разница между outerHeight и innerHeight зависит от предпочтений пользователя. Отображение или скрытие панели закладок или меню повлияет на разницу. (Я насчитал 4 легкодоступных параметра в IE, которые влияют на разницу.) Открытие или закрытие панели отладки также влияет на это. Zoom также влияет на это. (Я этого не ожидал, но вот мы здесь.) Затем есть такие вещи, как общие настройки пользовательского интерфейса. Использование темы, отличной от темы по умолчанию, может изменить разницу между двумя числами. - person Louis; 20.07.2017