Captcha или другой инструмент для проверки пользователя-человека

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

Ключевым требованием является то, чтобы инструмент обнаруживал это с максимально возможной вероятностью, т.е. без запроса разгадывания капчи; конечно, в качестве проверки второго уровня, т.е. если инструмент/сервис не уверен на 100%, такая капча может быть использована.

Я знаю о двух существующих сервисах/инструментах, т.е. «Nocaptcha Recaptcha» и «Invisible Recaptcha», но, возможно, есть и другие, и я не знаю, какой из этих двух лучше всего соответствует требованиям, следовательно, нужна ли дополнительная «проверка» (с результирующие движения мыши / пальца) Nocaptcha дает вам (намного?) более высокий процент успеха, чем невидимый.

Срок давно истек. Вы когда-нибудь находили решение? Если это так, размещение ответа здесь поможет другим.
@Mawg Смотрите мой комментарий под ответом Броули (который я принял). Я опубликую свой собственный ответ с описанием того, что я сделал, так как это может быть полезно для других.
Спасибо, Питер. Ну и плюс, конечно :-)

Ответы (2)

«Nocaptcha Recaptcha» (теперь называется reCAPTCHA v2) и Invisible reCAPTCHA работают одинаково в фоновом режиме. Единственное отличие состоит в том, что reCAPTCHA v2 использует собственную кнопку, а Invisible reCAPTCHA использует существующую кнопку на вашем сайте, которую пользователь все равно собирался нажать. Так что вероятность успеха должна быть примерно одинаковой. Для реализации невидимой reCAPTCHA требуется больше кода.

reCAPTCHA v3 может быть тем, что вы ищете. Кнопок нет: все работает в фоновом режиме. Этот API возвращает оценку, отражающую вероятность того, что пользователь является ботом, и затем вы решаете, что делать с пользователем на основе этой оценки.

Подробнее здесь:

Выбор типа reCAPTCHA

Большое спасибо за ваш ответ. Я еще не реализовал другое решение; Mailhide на самом деле не был снят с производства сразу в объявленную дату, поэтому я оставил его в то время. Но сегодня я снова проверил (спасибо, что напомнили!!), и теперь я получаю ужасную ошибку 404. Итак, вернемся к работе. Я приму ваш ответ, который, как представляется, подразумевает, что решение Google является лучшим, т.е. стандартом де-факто. Это уже было мое личное суждение, но, поскольку я не профессионал в области веб-разработки, я хотел получить здесь информацию/подтверждение от сообщества. Так что еще раз спасибо!
Вы можете обойти 404 с помощью archive.org
@Mawg Возможно, мой комментарий был неясен, но я имел в виду, что получаю 404, когда активирую ссылку Mailhide (т.е. посетитель нажимает на значок почты человека, указанного на нашем веб-сайте). Вы говорите, что archive.org хранит все эти настроенные URL-адреса Recaptcha / Mailhide ?? Если да, то мне было бы интересно узнать, как это использовать.
Ой! Виноват. Извини :-(
@browly Знаете ли вы, есть ли разница между использованием invisible и v3 в отношении защиты/уровня успеха?
Это не совсем правильное сравнение, потому что v2 и invisible возвращают «да, бот» или «нет, не бот», а v3 возвращает оценку , например, «32% вероятность того, что это бот», «90% вероятность того, что это бот». bot», и вы должны решить, какой порог принять.

Я принял ответ @browly как «правильный» по причине, которую я упомянул в комментарии. Но в этом ответе я дам больше информации о том, что я на самом деле реализовал на своем веб-сайте, просто для полноты и в (возможно, напрасной) надежде, что это поможет кому-то еще.

Предварительные замечания/контекст:

  • Я не профессионал в области веб-разработки и никогда не проходил формального обучения веб-разработке; все знания в основном ищутся в Google;
  • Я создал свой первый веб-сайт в 2003 году (который я до сих пор поддерживаю/обновляю в исходной версии), и с тех пор создал около 5 других веб-сайтов; все достаточно скромно. Это просто для того, чтобы объяснить, что мой опыт действительно ограничен, и почему мой подход может показаться немного старомодным по сравнению со всеми роскошными вещами, которые я видел в Интернете в настоящее время;
  • По обсуждаемой теме (как указать адрес электронной почты человека на веб-сайте) я прочитал много статей, и, похоже, нет единого мнения: оно идет от «сделать все возможное, чтобы скрыть / запутать» до «это не имеет значения, спамеры могут противостоять любому методу, и в любом случае спам-фильтры электронной почты настолько хороши, что не имеет значения, можно ли получить ваш адрес электронной почты";
  • Я осознаю важность обслуживания слабовидящих (или других нестандартных посетителей), и существуют очевидные противоречия между некоторыми методами запутывания и обеспечением доступности информации, например, для программ чтения с экрана, поэтому я попытался удовлетворить эти ограничения по-своему. , но я не утверждаю, что это на 100% соответствует последним правилам.

По поводу одного, но последнего пункта, хотелось бы все-таки "перестраховаться", а не просто занести адреса электронной почты в простой mailto:...

Моя реализация:

Рядом с именем каждого человека есть значок почты и значок LinkedIn. Раньше нажатие на значок почты активировало Google Mailhide, и адрес электронной почты отображался (в кликабельной ссылке) во всплывающем окне (безобразном!) Дублирование этого с помощью одной из ReCaptcha будет моей следующей задачей (любые советы приветствуются!), И я задокументирую это на более позднем этапе.

Что я уже сделал, так это показывал адрес электронной почты в формате изображения, когда посетитель наводит курсор на значок почты (адрес остается видимым в течение 30 секунд после того, как мышь отодвинулась от символа почты, так что достаточно времени, чтобы увидеть адрес электронной почты). ). Я зашел довольно далеко с обфускацией (ремни и подтяжки): я разрезал адреса электронной почты на три png (имя, @url без tld, т.е. как дескриптор твиттера, и, наконец, «.com»), показанные двумя разными методами css ( background и content), в разных селекторах css и с бессмысленными именами файлов изображений. Возможно, это перебор, но я повеселился, изобретая это. Даже если спам-бот просматривает css и выполняет распознавание файлов изображений, я не думаю, что робот сможет исправить это вместе. Недостатком, конечно, является то, что адрес электронной почты не кликабельный.mailto:ссылку (в моем списке дел, как описано выше), и что адрес электронной почты нельзя скопировать/вставить, так как это не текст. Я должен добавить, что наш формат адреса электронной почты очень прост (см. следующий пункт).

Для программ чтения с экрана HTML-значок электронной почты имеет вид <img alt="Our email is Lastname |at| our website address" src="mail-icon-white.png">. Это, вероятно, не идеально, но я думаю, что это «достаточно хорошо» и, возможно, не совсем политкорректно, если посетитель не может это интерпретировать, я не уверен, что хочу получать электронное письмо от этого человека ;)

Реализованная функциональность заключается в том, что когда посетитель «щелкает» по символу почты, его почтовый клиент открывается с правильным адресом электронной почты (базовая mailto:функциональность). И это должно работать только в том случае, если проверка reCaptcha v3 прошла успешно и с высоким баллом.

Некоторые полезные сообщения: https://stackoverflow.com/questions/7381150/how-to-send-an-email-from-javascript

А вот несколько полезных ссылок по использованию reCaptcha v3:

https://github.com/google/recaptcha/tree/master/examples и демо: https://recaptcha-demo.appspot.com/

https://github.com/hanshuo/mailhide2 (этот я еще не запускал, но понимаю, что он просто выводит ссылку mailto:, а я хочу, чтобы он напрямую открывал почтовый клиент, т.е. одним кликом меньше для пользователя.

Моя реализация довольно проста:

  • В javascript я вызываю php-скрипт с токеном;
  • Я делаю проверку с помощью Google/recapcha в php-скрипте (до этого все просто, и это происходит автоматически сразу после загрузки страницы), и я решаю, являются ли результаты в порядке (т.е. успешный вызов и высокая оценка) или нет, и назначаю буквенно-цифровой код в строку результата (я не вижу необходимости отправлять полные результаты JSON обратно во внешний интерфейс);
  • Затем я повторяю эту строку (в основном «Y» или «N») во внешнем интерфейсе (javascript) и сохраняю ее в глобальной переменной;
  • Когда посетитель нажимает на значок почты сотрудника, вызывается новая функция javascript (с идентификатором сотрудника в качестве параметра);
  • Эта функция javascript вызывает другой php-скрипт (с параметром «Y»/«N» и идентификатором сотрудника;
  • Затем php-скрипт решает на основе «Y» / «N», следует ли отправить обратно полный адрес электронной почты (назначенный на основе идентификатора сотрудника) или пустую строку во внешний интерфейс;
  • Основываясь на возвращенной строке, функция javascript либо открывает окно «новая почта» с правильным адресом электронной почты, либо ничего не делает (я не думаю, что это проблематично с точки зрения пользовательского интерфейса, поскольку это был бы исключительный случай, когда recaptcha возвращает плохие результаты, но это обычный пользователь; и при наведении на значок почты адрес электронной почты был виден в формате изображения, поэтому, когда щелчок не дает никаких результатов, пользователь все еще видит адрес электронной почты и может ввести адрес электронной почты вручную).