Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
14 / 13 / 1
Регистрация: 24.03.2020
Сообщений: 172
1

Следы от инспектора страницы

08.12.2020, 02:13. Просмотров 2528. Ответов 6
Метки нет (Все метки)

Всем привет! Не обессудьте, если вопрос направил не туда или он покажется странным...

Интересен такой момент: если во время работы web-страницы (даже с работающим JS-скриптом) включить инспектор кода страницы (через F12 в Chrome/FireFox) или сохранить саму веб-страницу в html-/htm-формате, это отследит сервер? А может ли вообще?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2020, 02:13
Ответы с готовыми решениями:

Инспектора объектов
Ребят помогите пожалуйста оч надо. С помощью инспектора объектов измените цвет формы, шрифт...

Проверка для инспектора
Добрый день! Как можно сделать проверку в инспекторе? Допустим есть две переменные: bool и string....

Properties Инспектора объектов
Когда на инспекторе объектов я нажимаю правой кнопкой мыши, открывается окно контекстного меню...

База данных налог. инспектора
Здравствуйте! Помогите пожалуйста, есть ли у кого готовая бд налогового инспектора (желательно, по...

6
10 / 7 / 3
Регистрация: 16.09.2012
Сообщений: 22
19.12.2020, 15:58 2
Лучший ответ Сообщение было отмечено Komandor_Yan как решение

Решение

https://keycode.info
F12 - e.keyCode == 123
1
Pure Free Digital Ghost
4211 / 1671 / 323
Регистрация: 06.01.2013
Сообщений: 4,287
25.12.2020, 23:39 3
Цитата Сообщение от Komandor_Yan Посмотреть сообщение
включить инспектор кода страницы (через F12 в Chrome/FireFox)
Есть хак, чтобы клиентский код это отследил, потом он может и на сервер переслать.

Добавлено через 28 секунд
Цитата Сообщение от JoVan Посмотреть сообщение
F12 - e.keyCode == 123
Открыть можно и без хоткеев через меню браузера.
1
10 / 7 / 3
Регистрация: 16.09.2012
Сообщений: 22
25.12.2020, 23:56 4
Контекстное меню браузера – то меню, которое появляется при нажатии правой кнопки мыши? - запретить это меню и создать свое?
Javascript
1
document.oncontextmenu = function (){return false}; // ?
(источник гугл)
(работоспособность не проверял )
1
Pure Free Digital Ghost
4211 / 1671 / 323
Регистрация: 06.01.2013
Сообщений: 4,287
26.12.2020, 05:46 5
Цитата Сообщение от JoVan Посмотреть сообщение
то меню, которое появляется при нажатии правой кнопки мыши?
Нет. Кроме того, можно запретить сайту его перехватывать.
Вот это имела в виду (в файле запись экрана): devtools.mp4
1
Эксперт JS
1354 / 660 / 298
Регистрация: 01.02.2019
Сообщений: 906
26.12.2020, 06:05 6
Лучший ответ Сообщение было отмечено Komandor_Yan как решение

Решение

Цитата Сообщение от JoVan Посмотреть сообщение
Контекстное меню браузера – то меню, которое появляется при нажатии правой кнопки мыши? - запретить это меню и создать свое?
Контекстное меню - да, это то, что открывается по нажатию на ПКМ, но Eva Rosalene говорила вам про другое меню, то, что, например, в хроме обозначено тремя вертикальными точками и располагается в правом верхнем углу. Его вы никак не "запретите")

Способы отследить открытие консоли существуют, я нашёл три, сейчас работающих, у каждого из которых своих плюсы и минусы:
  1. Самый наивный Отслеживание "урезания" окна
    Javascript
    1
    2
    3
    4
    5
    
    window.onresize = function(){
      if ((window.outerHeight - window.innerHeight) > 100) {
          alert('Console was opened!');
      }
    }
    Этот способ не сработает, если консоль будет открыта в отдельном окне, а также может дать ложное срабатывание при использовании всяких сайдбаров. Несмотря на это, он весьма популярный и даже оформлен в модуль: https://github.com/sindresorhus/devtools-detect.
  2. Старый добрый debugger!
    Javascript
    1
    2
    3
    4
    
    const start = Date.now();
    debugger;
    if (Date.now() - start > 100) alert('Console was opened!');
    // для использования следует обернуть в рекурсивный requestAnimationFrame
    Этот способ обнаружит консоль в любом состоянии. Его минусом является, конечно, то, что пользователь заметит, что за ним следят Обойти его тоже не трудно, достаточно отключить точки останова.
  3. Самый надёжный, хотя далеко не идеален:
    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    const element = new Image;
    let isDevtoolsOpen = false;
    element.__defineGetter__('id', () => isDevtoolsOpen = true);
    requestAnimationFrame(function check() {
      isDevtoolsOpen = false;
      console.log(element);
      if (isDevtoolsOpen) alert('Console was opened!');
      requestAnimationFrame(check);
    });
    Способ весьма хорош и обойти его, в сравнении с предыдущими, не так просто. У него тоже есть минус: он постоянно пишет в консоль наш элемент Image, что, конечно, не может не привлечь внимание пользователя, открывшего консоль. Решением может быть постоянная очистка консоли, что кстати делает один из сайтов, его использующих. Способ взят отсюда: https://stackoverflow.com/ques... 2#42194142, там и его обсуждение.

БОНУС
Этот способ не тихо обнаружит консоль, а её "положит"
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// https://jsfiddle.net/eligrey/j4v270p4/
var baseline_measurements = [];
var measurements = 20;
var warmup_runs = 3;
 
const status = document.documentElement.appendChild(document.createTextNode("DevTools are closed"));
const junk = document.documentElement.insertBefore(document.createElement("div"), document.body);
junk.style.display = "none";
const junk_filler = new Array(1000).join("junk");
const fill_junk = () => {
  var i = 10000;
  while (i--) {
    junk.appendChild(document.createTextNode(junk_filler));
  }
};
const measure = () => {
  if (measurements) {
    const baseline_start = performance.now();
    fill_junk();
    baseline_measurements.push(performance.now() - baseline_start);
    junk.textContent = "";
    measurements--;
    setTimeout(measure, 0);
  } else {
    baseline_measurements = baseline_measurements.slice(warmup_runs); // exclude unoptimized runs
    const baseline = baseline_measurements.reduce((sum, el) => sum + el, 0) / baseline_measurements.length;
 
    setInterval(() => {
      // In actual usage you would also check document.hasFocus()
      // as background tabs are throttled and get false positives
      const start = performance.now();
      fill_junk();
      const time = performance.now() - start;
      status.data = "DevTools are " + (time > 1.77 * baseline ? "open" : "closed");
      junk.textContent = "";
    }, 1000);
  }
};
 
setTimeout(measure, 200);

Должен заметить, что все вышеуказанные способы могут быть "перехитрены" (с разной степенью сложности), так что против профи вы ничего не сделаете

Многие из этих способов(а также другие) показаны тут: https://stackoverflow.com/ques... le-is-open
А в этом issue идёт занятное обсуждение некоторых способов, а в конце участник делает вывод, в котором приводит свои 4 способа отслеживания консоли и методы их преодоления.
2
10 / 7 / 3
Регистрация: 16.09.2012
Сообщений: 22
26.12.2020, 13:37 7
Зачем любопытным нужен инспектор кода страницы, если он ничего "такого" не показывает?

Например здесь: http://visiotxt.myartsonline.com

Можно сохранить саму веб-страницу в html-/htm-формате, это сервер не отследит, но и пользы от сохранения такой страницы ноль, потому что работать она уже не будет, никогда.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2020, 13:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Улучшение для инспектора в Unity
Всем доброго времени суток. В процессе разработки игры на Unity 2D возникла одна проблема с...

База данных налогового инспектора
Люди! Может кто знает хоть приблизительно структуру базы данных инспектора по сплате налогов? Ну...

Вывести количество асистентов у каждого инспектора из таблиц
Мне нужно вывести количество помощников у каждого инспектора из таблицы Staff. Таблица...

Разработать БД для учета работы налогового инспектора
Разработать БД для учета работы налогового инспектора??? Добавлено через 7 минут мне нужно...

Не отображается поле класса при использовании кастомного инспектора
Итак, опишу ситуацию: я создал скрипт с серилизованным публичным классом и объект того же типа,...

Обработчик события, описанного в PAS-файле, вызываемый из инспектора объектов
Доброго времени суток! Суть : Допустим есть procedure dbgridTitleClick(Column: TColumnEh);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.