Могут ли поисковые роботы или спам-боты эмулировать/инициировать события JavaScript во время чтения страницы?
Могут ли поисковые роботы или спам-боты эмулировать/инициировать события JavaScript?
Ответы (2)
Нет, потому что поисковые роботы получают статический HTML-поток. Они не запускают никаких событий инициализации, таких как init()
или myObj.init()
, которые есть в вашем коде JavaScript. Они не загружают никаких внешних библиотек, таких как jQuery, не выполняют ни код $(document).ready
, ни какие-либо стандартные слушатели .click()
. Таким образом, если у автора поискового бота нет конкретной причины намеренно создавать своего поискового бота для запуска или выполнения <script>
блоков, которые находятся на странице, он обычно не будет запускать код JavaScript.
Я написал поискового бота. Все, о чем я забочусь, это извлечение ссылок и текста со страницы. Однако я не хочу запускать чужой клиентский компонент календаря или компонент видеоплеера. Я не хочу, чтобы этот код JS был вставлен в мою базу данных, где он может оказаться на странице результатов поисковой системы (SERP). Таким образом, нет причин запускать команду eval()
для любого кода в блоках <script>
или запускать какие-либо события инициализации на уровне JS.
Когда поисковые боты загружают HTML DOM, в них обычно встраиваются внешние файлы .js. Таким образом, для выполнения JS потребуется проанализировать строки для нескольких файлов .js, затем создать конкатенатор для этих файлов и затем попытаться выполнить все, что было загружено. Это дополнительная работа для автора поискового бота без какой-либо чистой прибыли. Мы просто не хотим, чтобы этот JS-код появлялся где-либо в наших результатах поиска. В противном случае JS-код в поисковой выдаче выглядит как плохой результат поиска. Однако боты могут видеть контент в тегах <script>
и ищут только ссылки для сканирования. Возможно, поэтому люди начинают думать, что боты могут выполнять JavaScript, но на самом деле они анализируют их только на наличие текстовых ссылок.
Вот кто-то, кто утверждает, что Google загружает страницы в безголовый WebKit при их сканировании, чтобы получить возможность индексировать контент AJAX и по другим причинам. Однако поисковые боты обычно не отправляют формы.
Я просмотрел ваш сайт и обнаружил, что защита полностью на стороне клиента. Поскольку HTML-форма на самом деле представляет собой просто описание того, какие ключи/значения следует отправлять на какой-либо URL-адрес, нет никаких причин, по которым кто-то не мог бы просто отправить эти данные с помощью бота.
Пример:
POST /contact
/* ... */
fullname=SO+test&email=test%40example.com&reason=test&message=test
Кроме того, и это важно, таким образом вы наказываете законных посетителей. Есть множество причин, по которым JavaScript может быть заблокирован, не загружаться или просто не работать.