Будет ли этого достаточно, чтобы удержать робота? - PullRequest
3 голосов
/ 02 января 2012

Я думал о простых способах предотвращения отправки спам-роботами контента в общедоступные формы (например, контактные формы) на сайтах.

Я знаю, что многие сайты теперь задают пользователю простой вопрос (например, что такое 2 + 4?).

Если бы у вас было следующее, было бы достаточно сдерживать большинство роботов?

HTML

<form action="submit.php" method="post">
    <input type="text" name="name" placeholder="Name" /><br />
    <textarea name="message" placeholder="Message"></textarea><br />
    <label for="test">I am a:</label>
    <select id="test">
        <option value="robot" selected="selected">Robot</option>
        <option value="human">Human</option>
    </select>
</form>

PHP

<?php
if ($_POST['test'] == 'robot') header ('Location: contact.php?err=nothuman');
// process form
?>

Идея, заключающаяся в том, что робот, скорее всего, оставит пункт выбора на выбранном элементе.

Если у кого-нибудь есть другое очень простое решение, мне было бы интересно услышать?

Ответы [ 5 ]

5 голосов
/ 02 января 2012

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

2 голосов
/ 02 января 2012

Простая защита от спама: добавьте ввод с именем 'website' или любое другое популярное поле спамеров и скройте его с помощью CSS.На стороне сервера проверьте, установлено ли это поле, тогда это спам-бот.

2 голосов
/ 02 января 2012

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

Попробуйте: http://www.google.com/recaptcha Это бесплатно и легко интегрируется с вашим сайтом.

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

1 голос
/ 02 января 2012

Вы можете многое измерить, чтобы определить, был ли этот запрос сделан роботом. Некоторые,

  1. Разница во времени между тем, когда пользователь загружает страницу контактов, и когда он отправляет ее. Для роботов это будет очень мало. Или может быть номер серии 1-2-5. Скажите 10, 50, 100 секунд. В случае пользователя это будет реалистичное значение. Например, 11,345 секунд. Да, вы можете измерить мили секунд. Робот может отправлять запрос каждые 17 секунд, чтобы убедить вас, что это сделано человеком. Но не слишком ли сложно для людей отправить запрос в 17.000 секунд ??

  2. Проверьте, включен ли JavaScript. У роботов не будет JS.

  3. Аналогичным образом попробуйте загрузить вспышку. Флэш-файл может скрыть его реализацию. Он также может установить некоторое значение JS.
1 голос
/ 02 января 2012

Ну, это кажется простым решением. Может оказаться слишком простым . Взгляните на эти готовые решения:

Но если вы хотите сохранить простоту, прочитайте это руководство от PHPBuilder . Затем вы сможете решить сложность вашего сценария

...