Можно ли проверить, был ли вызов функции из devtools?

Да, в JavaScript есть способы проверить, был ли вызов функции из инструментов разработчика (devtools). Однако следует отметить, что эти способы не являются 100% надежными и могут быть обойдены опытными исследователями или злоумышленниками.

Один из способов проверить, был ли вызов функции из devtools, заключается в использовании console.trace(). Данный метод выводит стек вызовов консоли в момент его вызова. Если функция была вызвана из devtools, в стеке будут отображены соответствующие записи.

Например, представим, что у нас есть функция myFunction():

function myFunction() {
  console.trace();
  // остальной код функции...
}

При вызове myFunction() из devtools в консоли будет отображаться стек вызовов, который можно просмотреть и анализировать. Если вызов происходит из кода на веб-странице, стек вызовов может не содержать отображаемых записей из инструментов разработчика.

Второй способ, который можно использовать, для проверки вызова из devtools - это использование свойства window.chrome или аналогичных свойств в других браузерах. window.chrome возвращает объект chrome при наличии открытых devtools.

if (window.chrome && window.chrome.devtools) {
  // Был вызов из devtools
} else {
  // Был вызов из кода на веб-странице
}

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

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