как защитить часть текста от роботов?

Главные вкладки

Аватар пользователя Антоха82 Антоха82 28 июля 2014 в 4:30

Такая тема уже [#14403]была[/#] на форуме, однако решение проблемы там так не обнародовали. Начну с самого начала, ибо не знаю даже как подступиться к проблеме.
Делаю сайт, в котором пользователи могут посмотреть условие задачи и ответ к ней. Я хочу защитить ответы к задачам от роботов, чтобы мою базу ответов никто не перекачал за считанные минуты. Думал сделать это с помощью капчи: т.е. пользователь читает условие задачи, а если хочет посмотреть ответ к ней, набирает текст с картинки, нажимает кнопку и получает ответ. В связи с этим у меня к вам уважаемые два вопроса:
1) Стоит ли вообще защищать информацию с помощью капчи, ведь она, предназначена для того чтобы робот не отправлял спам? Может есть какое-то другое решение?
2) Если все-таки использовать капчу, как ее прикрутить к тексту задачи, чтобы реализовывался описанный выше алгоритм? Капчу легко прикрутить к форме, а как присобачить к ноде (тексту) ума не приложу.

Комментарии

Аватар пользователя azsx azsx 28 июля 2014 в 5:48

блокировка по ip при внешнем парсинге с вводом совершенно нестандартных капч может реально усложнить жизнь школьникам. Если еще отлавливать ip от прокси и впн (они один фиг все стандартные) - то можно в тупик поставить даже профессионалов.
зы
по моему мнению, пока есть возможность - живым людям лучше капчу не показывать.

Аватар пользователя Антоха82 Антоха82 28 июля 2014 в 21:01

frajj wrote:
Подгружай ответы аяксом.

Поставил модуль Field Value Loader, который подгружает CCK поле с ответом по запросу пользователя. Означает ли это, что робот (обычный, не сильно крутой робот) не сможет узнать ответ? Извините, если вопрос слишком глупый, не разбираюсь я в этом совсем. Это такая же защита что и с капчей или хуже/лучше? Если это вообще не защищает мои ответы, можно ли сделать так, чтобы погрузка данных осуществлялась после заполнения капчи?

Аватар пользователя Антоха82 Антоха82 29 июля 2014 в 17:39

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

Аватар пользователя Антоха82 Антоха82 10 ноября 2015 в 11:49

Вот придумал один из возможных путей решения моей проблемы. Хотел бы услышать критику.
Суть такова. Подключаю модуль Webform. В каждой задаче (ноде) создаю одно поле Webform (с каким-нибудь произвольным вопросом, на который не обязательно отвечать) и кнопкой "отправить". На кнопку повесить капчу. Когда пользователь ввел капчу и нажал кнопку его перебрасывает на страницу в которой обычно пишут что-то типа "ваше сообщение отправлено". А я решил в это сообщение вписать ответ к задаче.
Проблема в этом способе состоит в том, что капча привязывается к конкретной вебформе, а вебформа привязана к ноде. Таким образом у меня на сайте будет стоклько капчей, сколько и задач. А их у меня тысячи! Я очень опасаюсь что это негативно отразится на производительности сайта. На рисунке во вложении показаны три капчи к трем вебформам. А если их будет пять тысяч, что думаете?

Аватар пользователя frajj frajj 30 июля 2014 в 10:10

Почему бы не написать кастомную форму, которую можно вывести блоком вместе с типом контента, прицепить к ней капчу а при сабмите проверять текущую ноду (функция arg()) и доставать ответы, например, с поля той же самой ноды?

В результате меньше телодвижений при создании "задачи"

Аватар пользователя Антоха82 Антоха82 30 июля 2014 в 18:30

Спасибо, я как раз к этому и пришел. Но вот вопрос: можно ли создать форму средствами HTML и подцепить к ней капчу? Я сделал форму с кнопкой, но чтобы поставить на эту кнопку капчу, нужен id формы. Его можно получить только у кастомных форм? Не хочется разбираться созданием своих форм.

Аватар пользователя Антоха82 Антоха82 31 июля 2014 в 4:27

Ааааа... получилось!!! Я готов танцевать, три дня бился, уже было сдаваться начал.
Напишу как я сделал, может кому пригодиться. Ни строчки кода, как и хотел.
Задача: скрыть часть текста и показывать ее только при заполнении капчи.
Решение: Создаем ноду. Делим текст (в моем случае это была задача) на две части - первую записываем в тело ноды, а вторую в CCK поле (для моего случая хватило обычной строки, если текста много можно использовать другое много строчное поле). Далее, создаем другую ноду (я ее создал в другом типе содержимого, хотя это не обязательно), в которую запихиваем вебформу. Эта вебформа нам нужна только ради айдишника этой формы который надо будет вставить в капчу. В настройках вебформы создаем скрытое поле, которое не будет видно пользователю (нам ведь ничего заполнять не нужно, только кнопка). К этой кнопке подключаем капчу,
Итак, у нас есть две ноды, во второй вебформа с заветной кнопкой и капчей. Размещаем обе ноды на одной странице, адрес которой совпадает с адресом первой ноды (той, которая без кнопки). В настройках вебформы можно указать адрес страницы, на которую нас будет перекидывать после нажатия на кнопку. Ставим %server[REQUEST_URI]/любоеслово. Таким образом, после заполнения капчи и нажатии на кнопку, нас будет перекидывать по адресу, содержащему айдишник первой ноды. А дальше вьюсом на этой новой странице выписываем поле CCK, в котором мы храним скрытую информацию.
Этот способ не подходит, если вы хотите вывести скрытую информацию непременно на той же странице. Но, в моем случае это не принципиально.
P.S. спасибо всем, кто принимал участие

Аватар пользователя dimitrian777 dimitrian777 4 августа 2014 в 12:49

Антоха82 wrote:
Такая тема уже [#14403]была[/#] на форуме, однако решение проблемы там так не обнародовали. Начну с самого начала, ибо не знаю даже как подступиться к проблеме.
Делаю сайт, в котором пользователи могут посмотреть условие задачи и ответ к ней. Я хочу защитить ответы к задачам от роботов, чтобы мою базу ответов никто не перекачал за считанные минуты. Думал сделать это с помощью капчи: т.е. пользователь читает условие задачи, а если хочет посмотреть ответ к ней, набирает текст с картинки, нажимает кнопку и получает ответ. В связи с этим у меня к вам уважаемые два вопроса:
1) Стоит ли вообще защищать информацию с помощью капчи, ведь она, предназначена для того чтобы робот не отправлял спам? Может есть какое-то другое решение?
2) Если все-таки использовать капчу, как ее прикрутить к тексту задачи, чтобы реализовывался описанный выше алгоритм? Капчу легко прикрутить к форме, а как присобачить к ноде (тексту) ума не приложу.

Все ответы,текст ответов выводить картинками и пусть парсеры сначала качают картинки потом пробуют распознать текст...

Аватар пользователя Антоха82 Антоха82 4 августа 2014 в 21:27

dimitrian777 wrote:

Все ответы,текст ответов выводить картинками и пусть парсеры сначала качают картинки потом пробуют распознать текст...

Есть программа Файн Ридер, которая решит эту проблему за несколько минут.

Кстати, я рано радовался. Весь мой план, описанный выше, можно обойти если попросту ввести в адресную строку нужный путь. Тогда не понадобится набирать капчу. На данный момент решения проблемы у меня нет, скорее всего придется обращаться к услугам профессионалов.