Обнаружение программного обеспечения, установленного с веб-сайта

Я создаю сайт в HTML. Есть ли способ обнаружить программное обеспечение, установленное на ПК, с которого осуществляется доступ к веб-сайту. Я уверен, что это делается с помощью JavaScript, но я не нашел бы для этого руководства. Также я поигрался с некоторыми jquery, и это не сработало. Спасибо

Is there anyway to detect the software installed on PC Нет, лучшее, что вы можете сделать, это взять строку user-agent, но ее можно подделать.
Keith 10.04.2018 16:42

Какой точно вы пытаетесь обнаружить. Не будь широким. Вы упомянули в комментарии, как Java может обнаруживать геймпады. У JavaScript тоже есть такая возможность, но браузер (к счастью) разборчив в этом, будет и не будет раскрывать. Что вы на самом деле пытаетесь сделать?

zero298 10.04.2018 16:54

@ zero298 Ничего особенного. Я просто играл с JavaScript и HTML. Не могли бы вы уточнить, как JavaScript может обнаруживать геймпады. Я долго искал. Или, может быть, он может определять драйверы, а не программное обеспечение? Есть предположения.

Rohit 10.04.2018 17:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
643
3

Ответы 3

Нет.

JavaScript в браузерах имеет высокий в песочнице в целях безопасности. Нет никакого способа узнать что-либо о компьютере, на котором работает веб-сайт, кроме очень ограниченного набора информации, доступной браузером.

Установленное программное обеспечение не входит в эту информацию, равно как и файлы на компьютере.

Спасибо за ответ. Но я правильно помню, как некоторое время назад я играл в онлайн-флеш-игру, где она использовалась для обнаружения моего программного обеспечения виртуального контроллера. Так было ли это сделано с помощью flash или JavaScript?

Rohit 10.04.2018 16:46

Flash способен на большее. Flash - это не JavaScript. Он запускается через плагин, установленный в браузере, который может обходить песочницу. Flash в значительной степени исчез в браузерах, хотя именно потому, что он постоянно создавал довольно серьезные проблемы с безопасностью.

samanime 10.04.2018 16:47

В случае с JavaScript это то же самое для программного обеспечения и драйверов (я имел в виду, они оба скрыты от JavaScript или только список программного обеспечения ограничен, а драйверы доступны для доступа).

Rohit 10.04.2018 17:08

Все драйверы, файловая система, программное обеспечение и т. д. Ограничены. Почти все в компьютере, за исключением нескольких очень простых вещей (ОС, пользовательский агент браузера), скрыто. Есть некоторые вещи, для которых доступны API-интерфейсы, которые браузер сделает доступными контролируемым образом после получения явного разрешения от пользователя (камера, данные о местоположении, микрофоны и т. д.), Но это очень конкретный список. Если есть что-то конкретное, что вас волнует, я могу указать вам правильное направление.

samanime 10.04.2018 17:28

Вы можете использовать Электрон, и это позволит вам взаимодействовать с пользователем через JavaScript (используя Node JS).

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

Если они хотят написать приложение с использованием стека веб-технологий, это будет хорошим решением. Я сделал то же самое с помощью Chromium. Хотя, как вы сказали, это определенно больше не будет считаться веб-сайтом.

samanime 10.04.2018 17:32

Короткий ответ: НЕТ. Однако я хочу ответить на этот вопрос внимательно и конкретно, потому что я думаю, что вы, возможно, неправильно понимаете цель и возможности браузера. Некоторые аспекты вашей машины доступны вашему браузеру. Однако некоторые вещи намеренно замаскированы для защиты конечных пользователей.

Когда вы создаете веб-приложение, вы не должны думать: «Что установил пользователь, что я могу использовать». Вместо этого вы должны попытаться предоставить набор функций, а затем постепенно увеличивать пользовательского опыта в зависимости от того, что пользователь может и позволяет вам использовать.

Вы прокомментировали, как Flash смог обнаружить геймпады,

I remember correctly a while ago I used to play an online flash game where it used to detect my virtual controller software. So was it done by flash or JavaScript?

JavaScript действительно может сделать это с помощью API геймпада. См. Примеры в Использование Gamepad API.

Следует отметить, что браузер является привратником этой информации и пытается максимально ограничить (или должен) то, что раскрывается. Например, другой способ, которым браузер может выдать информацию, - это строка пользовательский агент, которая отправляется с каждым запросом, который делает ваш браузер. Он может определить, какой браузер вы используете, а также какую операционную систему вы используете. Конечно, его также можно было опустить или просто лежать.

Еще одна вещь, которую можно предать, - это разрешение экрана. Поскольку, я бы сказал, пользователи обычно запускают браузеры с максимальным разрешением, вы можете определить размеры монитора пользователей.

Вы также можете получить информацию о том, есть ли у пользователя микрофон или камера с помощью MediaDevices.getUserMedia ().

Вы даже можете попытаться выяснить, какими возможностями обладает графический процессор пользователя с контекстом WebGL и запросить параметры отладки:

function printContextInfo(gl) {
  console.groupCollapsed("WebGL Information");
  console.groupCollapsed("Version Information");
  console.info(`Version: ${gl.getParameter(gl.VERSION)}`);
  console.info(`Shading Language Version: ${gl.getParameter(gl.SHADING_LANGUAGE_VERSION)}`);
  console.info(`Renderer: ${gl.getParameter(gl.RENDERER)}`);
  console.groupEnd();
  console.groupCollapsed("Parameter Limits");
  console.info(`Max Texture Size: ${gl.getParameter(gl.MAX_TEXTURE_SIZE)}`);
  console.info(`Max Viewport Dims: ${gl.getParameter(gl.MAX_VIEWPORT_DIMS)}`);
  console.info(`Max Vertex Attribs: ${gl.getParameter(gl.MAX_VERTEX_ATTRIBS)}`);
  console.info(`Max Vertex Uniform Vectors: ${gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS)}`);
  console.info(`Max Varying Vectors: ${gl.getParameter(gl.MAX_VARYING_VECTORS)}`);
  console.info(`Max Combined Texture Image Units: ${gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS)}`);
  console.info(`Max Vertex Texture Image Units: ${gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)}`);
  console.info(`Max Texture Image Units: ${gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}`);
  console.info(`Max Fragment Uniform Vetors: ${gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS)}`);
  console.groupEnd();
  console.groupCollapsed("Supported Extensions");
  gl.getSupportedExtensions().forEach(extension => console.info(extension));
  console.groupEnd();
  let debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
  if (debugInfo) {
    console.groupCollapsed("Debug Info");
    console.info(`Unmasked Vendor: ${gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL)}`);
    console.info(`Unmasked Renderer: ${gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)}`);
    console.groupEnd();
  }
  console.groupEnd();
}

const canvas = document.getElementsByTagName("canvas")[0],
  ctx = canvas.getContext("webgl");

printContextInfo(ctx);
<canvas width = "100" height = "100"></canvas>

Спасибо за ответ. Причина, по которой я хотел это сделать, заключалась в том, чтобы предложить пользователю похожие вещи, которые ему могут понравиться, например, если у него установлена ​​какая-то игра (скажем, Skyrim), веб-сайт предложит похожие игры (ведьмак 3).

Rohit 10.04.2018 17:57

Другие вопросы по теме