Могут ли поисковые роботы или спам-боты эмулировать/инициировать события JavaScript?

Могут ли поисковые роботы или спам-боты эмулировать/инициировать события JavaScript во время чтения страницы?


person Community    schedule 30.03.2012    source источник
comment
При каких условиях? Поисковый бот может загрузить вашу страницу, чтобы обнюхать ее с помощью выражений; если он столкнется с формами, он может продуть их этим, чтобы посмотреть, что произойдет; если он встретит капчу, он может распознать ее и посмотреть, сможет ли он ее перехитрить. Программное обеспечение Automator может перемещать мышь и запускать щелчки, так было всегда. Вот как боты работают в MMORPG, а также в браузерах. Каков ваш вариант использования — вы ужесточаете свое приложение?   -  person frumbert    schedule 30.03.2012
comment
Вы можете увидеть на моем веб-сайте: www.omerbase.com - Анти-Спам. Мне было интересно, может ли бот для спама/поиска понять, что DIV является кликабельным и означает, что это повлияет на отправку формы... как вам грустно, он может искать javascript с выражениями и находить элемент отношения в HTML, . ... так что это может вызвать событие click/hover/etc... я правильно понял?   -  person    schedule 30.03.2012
comment
@ZlatanOmerović Если ваше приложение станет достаточно популярным, это только вопрос времени, когда кто-нибудь нажмет «Просмотреть исходный код» и выяснит, что делает div при нажатии, и напишет бота, который будет делать это постоянно. Таким образом, независимо от того, могут ли поисковые и спам-боты инициировать действие, вы можете также предположить, что кто-то напишет бота, чтобы вызвать это действие.   -  person Adam Mihalcin    schedule 30.03.2012
comment
@AdamMihalcin Я знаю это. Но посетите мою страницу и, пожалуйста, посмотрите на мою реализацию того, что я сделал. Есть интервалы, и они проверяют любые изменения на этой кнопке и т. Д. Я прямо сейчас придумываю способы доказать, что посетитель - настоящий человек ...   -  person    schedule 30.03.2012


Ответы (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, но на самом деле они анализируют их только на наличие текстовых ссылок.

person Clomp    schedule 30.04.2016

Вот кто-то, кто утверждает, что Google загружает страницы в безголовый WebKit при их сканировании, чтобы получить возможность индексировать контент AJAX и по другим причинам. Однако поисковые боты обычно не отправляют формы.

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

Пример:

POST /contact
/* ... */

fullname=SO+test&email=test%40example.com&reason=test&message=test

Кроме того, и это важно, таким образом вы наказываете законных посетителей. Есть множество причин, по которым JavaScript может быть заблокирован, не загружаться или просто не работать.

person Sijmen Mulder    schedule 30.03.2012
comment
да. Вы правы, кроме одного. Одна вещь, кажется, не отображается в форме, как это должно быть, когда она просто загружается. Эта штука появляется при заполнении данных в форме и при нажатии кнопки AntiSpam. Проверьте себя и проверьте каждый элемент ввода в форме, и вы увидите, как я в настоящее время стараюсь отличать людей от ботов. :) - person ; 30.03.2012
comment
На самом деле, сценарий не удался, и это одна из причин, по которой я добавил предупреждение. Я нажал кнопку защиты от спама, заполнил форму, но кнопка отправки так и не была активирована. Не стесняйтесь добавлять ручную проверку, но, пожалуйста, не делайте этого в JavaScript. - person Sijmen Mulder; 30.03.2012
comment
длины указаны в описаниях полей... допустимая почта, длины и т.д... только если у вас был переопределен скрипт с JS-инъекцией через Firebug или что-то в этом роде :) - person ; 30.03.2012
comment
Не вижу смысла поддерживать пользователей с отключенным JS. Преимущества отсутствия спама перевешивают крошечный рынок, который предпочитает его отключать. Я также изучаю, вызывают ли спам-боты события JS, и пока не похоже, чтобы кто-то действительно знал об этом. Я думаю, что я должен просто проверить это тогда... - person 3Dom; 16.11.2013