Реализация «Сообщить об этом контенте» и обнаружение спаммера или робота, вызванного событием - PullRequest
0 голосов
/ 01 февраля 2010

Я создаю форум для веб-сайта и планирую реализовать функцию «Сообщить об этом контенте».

Честно говоря, я не уверен, насколько полезной (буквально необходимой) будет эта функция, поскольку для публикации потребуется учетная запись пользователя (созданная администратором), но решение меня интересует.

Короче говоря, это сценарий:

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

Проблема, с которой я сталкиваюсь, заключается в основном в «щелчках робота», или, скорее, в том, как внедрить систему, чтобы ее не обманули «щелчки робота».

Есть несколько методов, которые приходят на ум:

1) Пользователь-агент
2) Требование нескольких флагов (в заранее определенное время?), Прежде чем реагировать любым способом
3) robots.txt
4) Требование участия человека во второй форме (капча или «указать причину»)

Что я думаю о них:

1) Ненадежный (как единственное решение)
2) Для этого требуется масса пользователей, что может привести к тому, что событие никогда не будет запущено
3) Вероятно, это «правильный» путь, но он будет работать только для тех, кто его уважает
4) Мех, я ненавижу капчу, и требование причины может поднять планку слишком высоко, чтобы сохранить функцию полезной

Какими методами (высоко просветленным) сообщество должно поделиться со мной?

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Вы пропустили превращение ссылки в nofollow, но я бы выбрал комбинацию, требующую, чтобы человеческий вклад (причина, сведения о заявителе) противодействовали роботам, и требовал нескольких флагов, чтобы люди просто не отмечали людей, с которыми они не согласны / не нравится на форуме.

1 голос
/ 01 февраля 2010

Вы можете добавить «сообщить об этом» <form> в DOM с помощью javascript appendChild();.

Это предотвратит много спама.

Это также помешало бы пользователям, не использующим JavaScript, видеть кнопку отчета. Но поскольку эта функция не мешает работе с пользователем, она, вероятно, является приемлемым вариантом.

window.onload = function() {
    var f = document.createElement('FORM');
        f.method = 'post';
        f.action = 'report.cgi';

    var b = document.createElement('INPUT');
        b.type = 'submit';
        b.value = 'Report this';


        f.appendChild(b);
        document.body.appendChild(f);
 }

Примечание:
Атрибут rel="nofollow" гарантирует, что поисковые системы не «подсчитывают» ссылку, но, тем не менее, следуют по ней (да, название предполагает другое).

Если вы хотите, чтобы поисковые системы не трогали определенный файл, используйте robots.txt

Примечание 2:
Сообщение о чем-то - это действие, которое «меняет» что-то на сервере. Таким образом, это не должен быть запрос GET. Вместо этого это должен быть запрос POST. Другими словами: не используйте <a href"">, а вместо этого отправьте <form> с аргументом method, установленным в "post".

1 голос
/ 01 февраля 2010

Вы можете просто перенаправить на форму, где пользователю необходимо указать причину сообщения о контенте. Робот, вероятно, ничего здесь не введет, и форма не будет обработана, если пользователь ничего не введет.

...