Защита от роботов — Технологии Яндекса
Авторами поисковых запросов могут быть не только пользователи, но и роботы. При большом потоке запросов от роботов могут быть превышены ограничения, наложенные на использование Яндекс.XML.
Для предотвращения несанкционированных обращений роботов к поиску используется алгоритм защиты. Если предполагается, что запрос задан роботом, вместо результатов поиска возвращается CAPTCHA (статья в Википедии про CAPTCHA).
Для использования алгоритма защиты от роботов партнер должен передавать сведения об IP-адресе и куке spravka автора запроса. Кука spravka формируется на стороне Яндекс.XML и возвращается при первом обращении пользователя за результатами поиска. В полученном значении партнер должен заменить домен на свой, а затем добавить следующую строку к поисковому ответу:
Set-Cookie: spravka=...
Сведения об IP-адресе и куке spravka передаются в заголовке запроса в формате:
X-Real-Ip: 99.999.999.99
Cookie: spravka=<значение, переданное от Яндекса>
Диаграмма последовательности действий, выполняемых для защиты от роботов, приведена на рисунке ниже.
Пользователь отправляет запрос партнеру Яндекс.XML.
Поисковый запрос отправляется сервису Яндекс.XML. Запрос должен соответствовать заданному формату.
Яндекс.XML инициирует выполнение алгоритмов защиты от роботов. Для проверки используются значения IP-адреса и куки spravka (если ранее выставлена).
Возможные результаты проверки:
- Предположительно, запрос отправлен не роботом. Выполняется переход к пункту 13.
- Яндекс.XML возвращает партнеру XML-файл следующего формата:
<?xml version="1.0" encoding="utf-8"?> <yandexsearch version="1.0"> <response> <error code="100">Robot request</error> </response> <captcha-img-url>http://captcha.image.gif</captcha-img-url> <captcha-key>Идентификационный номер CAPTCHA</captcha-key> <captcha-status>Статус</captcha-status> </yandexsearch>
Пользователю возвращается страница, содержащая CAPTCHA.
Пользователь отправляет значение CAPTCHA партнеру.
- Партнер отправляет полученное от пользователя значение CAPTCHA GET-запросом следующего формата:
https://yandex.ru/xcheckcaptcha?key=<идентификационный номер CAPTCHA>
&
rep=<введеное пользователем значение CAPTCHA> Полученное значение проверяется сервисом Яндекс.XML. Если введено некорректное значение CAPTCHA, выполняется переход к пункту 4. При этом в параметре
captcha-status
передается значение «failed».Если введено корректное значение CAPTCHA, Яндекс.XML выставляет пользователю куку spravka и передает ее партнеру в заголовке следующего формата:
HTTP/1.1 200 OK Set-Cookie: spravka=
<
значение куки>
Если запрос, переданный в Яндекс.XML на шаге 1 был успешно сохранен, выполняется переход к шагу 12.
Партнер предлагает пользователю ввести запрос.
Пользователь отправляет запрос партнеру Яндекс.XML.
Поисковый запрос отправляется сервису Яндекс.XML. С запросом передается IP-адрес пользователя и кука spravka.
Яндекс.XML обрабатывает поисковый запрос и формирует результаты.
XML-файл с результатами поиска возвращается партнеру.
- Партнер возвращает обработанный ответ пользователю. Если на шаге 9 Яндекс.XML выставил куку spravka, она сохраняется у пользователя.
Для ознакомления с форматом ответа, возвращаемого Яндекс.XML в случае отображения CAPTCHA, необходимо отправить в качестве запроса (значение параметра query
поискового запроса) следующую строку: «e48a2b93de1740f48f6de0d45dc4192a».
Следующий GET-запрос может быть использован пользователем «xml-search-user» для ознакомления с форматом ответа, возвращаемым в случае отображения CAPTCHA:
wget -q --header="X-Real-Ip: 127.0.0.1" -SO- 'https://yandex.ru/search/xml?user=xml-search-user&key=03.44583456:c876e1b098gh65khg834ggg1jk4ll9j8&query=e48a2b93de1740f48f6de0d45dc4192a&showmecaptcha=yes'
В поисках идеальной CAPTCHA / Habr
CAPTCHA, или Completely Automated Public Turing Tests to Tell Computers and Humans Apart (Полностью автоматический публичный тест Тьюринга для различения компьютеров и людей), была создана для того, что бы убедиться, что введенные данные не были сгенерированы компьютером. Эти своеобразные тесты обычно используются в Интернете для защиты форм регистрации и комментирования от спама. Если быть честным, я испытываю смешанные чувства насчет CAPTCHA. Она в большинстве случаев раздражает меня, но не смотря на это я использовал CAPTCHA в качестве защиты на некоторых сайтах.В этой статье я хочу углубиться в поиск идеального решения проблемы растущего количества сгенерированного людьми спама. Мы взглянем на то, как и зачем используется CAPTCHA и ее влияние на юзабилити в поисках ответа на ключевые вопросы: что представляет из себя идеальная CAPTCHA и почему в качестве защиты предпочитают именно ее?
Стремление к человечности
Для того, что бы понять нужду в CAPTCHA, нам нужно понять цели, побуждающие спамеров к созданию и использованию автоматических систем ввода. В целях этой статьи мы будем принимать за спам любое нежелательное действие или ввод на сайте, будь то нечто вредоносное, приносящее доход спамеру, или же вообще несоответствующее назначению и тематике сайта. В цели спама входят:
- Массивная реклама;
- Манипулирование онлайновыми системами голосования;
- Создание нечестного превосходства;
- Вандализм или уничтожение целостности, чистоты сайта;
- Публикация неуместных ссылок для повышения рейтингов в поисковых системах;
- Получение доступа к личной информации;
- Распространение вредоносного кода.
Все это приводит к созданию прибыльных ситуаций для спамеров. Автоматизация процесса, очевидно, приводит к сверхчеловеческой скорости и эффективности.
Те, кто управляют сайтами, знают, что это достаточно распространенный бизнес и достаточно серьезная проблема. Akismet, популярная система по отлову спама (чаще всего встречается в виде плагина для WordPress), фиксирует более 18 миллионов спам-комментариев в день, в сумме эта система отловила 20 миллиардов комментариев за все ее историю. Система Mollom, которая создана с тем же предназначением, отлавливает более миллиона спам-комментариев в день, эта же система подсчитала, что
Знакомство с CAPTCHA
На одной стороне монеты спамер, на другой обычный владелец сайта, который столкнулся с некоторыми проблемами:
- Блоги и форумы, тонущие под весом спама,
- Учетные записи, созданные под ложным предлогом для неправомерных целей,
- Боты, разрушающие динамику сайта,
- Необходимость в постоянно контроле за качеством контента и опытом пользователей.
Автоматический спам постоянно беспокоит владельцев сайтов, поэтому CAPTCHA выглядит привлекательно как решение этой проблемы… до поры до времени. Время, необходимое для постоянного контроля пользовательского контента несопоставимо со временем, необходимым для введения CAPTCHA на сайте – именно это толкает разработчиков на использование CAPTCHA.
Не секрет то, что CAPTCHA используется практически везде. По статистике проекта reCAPTCHA более
CAPTCHA решает проблему в лоб: ее предназначение заключается исключительно в остановке спамеров. Настоящие пользователи, в большинстве случаев, проверку проходят. То есть, в идеале, пользователей эта защита не затрагивает.
К сожалению, это не так. Проблема читаемости CAPTCHA не нова. Организация W3C опубликовала отчет в 2005 году на тему недоступности CAPTCHA, в котором было объявлено, что читаемость CAPTCHA человеком в некоторых системах может достигать лишь 90%. Немногим позже, в 2009 году, Кейси Генри обратил внимание на влияние CAPTCHA на переходы и предположил, что возможные потери клиентов составляют примерно 3%:
Учитывая тот факт, что множество людей рассматривают переходы, как источник доходов, потеря 3.2% клиентов может отразиться на продажах. Как по мне, так лучше вручную перебирать спам, чем терять часть прибыли.— Кейси Генри, CAPTCHAs’ Effect on Conversion Rates
В 2010 году, команда Стэндфордского Университета опубликовала исследование, названное “Насколько хорошо люди справляются с CAPTCHA? Подробная оценка ситуации” (PDF), в котором была дана оценка CAPTCHA на крупнейших сайтах Интернета. Не стало сюрпризом то, что результаты оказались весьма неудовлетворительными, но больше всего поражает тот факт, что в среднем люди тратили 28.4 секунд на решение аудио-CAPTCHA. В исследовании так же уделялось внимание на проблемы людей, у которых английский язык не является родным.
Веб-разработчик Тим Кадлек предвещает смерть CAPTCHA, предоставляя достаточно серьезный аргумент против использования этой защиты:
Спам не является проблемой пользователей, это проблема людей, администрирующих сайт. Это очень высокомерно со стороны администраторов – сваливать такую проблему на плечи пользователей сайта.— Тим Кадлек, Death To CAPTCHAs
Ввод CAPTCHA может казаться абсолютно тривиальной задачей, но исследования (как вышеупомянутый отчет от W3C) показывают, что подобное суждение имеет мало общего с реальным положением дел. И, как сказал Кадлек в своей статье, что же насчет пользователей с проблемным зрением, дислексией и другими заболеваниями, затрагивающими сенсорные функции? Для них это непреодолимое препятствие, это просто нечестно. Именно пользователи инвестируют и задают предназначение сайтам.
Вопрос в том, действительно ли CAPTCHA настолько неприемлема для пользователей, что от нее необходимо отказаться? Возможно, более важный вопрос: существует ли легко читаемая CAPTCHA, которую невозможно взломать? Если ответ отрицательный, то что же является подходящим решением для борьбы со спамом в сети?
Мир CAPTCHA
Человеческий мозг является потрясающим инструментом. Его возможность концептуализировать, находить порядок в хаосе, адаптировать что-либо под человека делает его невероятно полезной вещью. В некоторых задачах он с легкостью оставляет компьютеры позади. В других – например, математика – он проигрывает по всем параметрам.
Логически рассуждая, можно вывести основные параметры наиболее успешной CAPTCHA. Итак, CAPTCHA должна быть:
- Задачей, которую пользователи могут решить в любых условиях, но на решение которой не способен компьютер,
- Задачей, которая решается пользователями в миг, но которая является тяжелой для компьютера,
- Задачей, для решения которой требуется минимум ввода данных,
- Задачей, которая должна быть легко выполнимой для всех пользователей, включая тех, кто страдает специфическими заболеваниями (CAPTCHA должна быть не сложнее обычного веб-серфинга).
Одно из наиболее заметных превосходств человека над компьютером выражается в умении различать визуальные образы и модели. Наиболее популярные CAPTCHA отталкиваются именно от этого факта.
Веб-разработчики перелопатили множество вариантов: простые тесты по определению образов, интерактивные задания, игра в крестики-нолики и математические задачи, с которым пришлось бы изрядно побороться даже математикам. Мы же рассмотрим более адекватные идеи, которые внедряются в Интернете в наше время.
Определение текста
Наиболее популярным типом CAPTCHA на данный момент является определение текста, набора символов (ярким примером является проект reCAPTCHA).
Проект reCAPTCHA нацелен на остановку спама и помощь в оцифровке книг.
reCAPTCHA была создана в Университете Карнеги-Меллона, доме первопроходцев CAPTCHA и создателей термина (в 2000). Ныне под управлением корпорации Google, проект использует отсканированный текст, который системы оптического распознавания символов (OCR) понять не могут. Это, в теории, предоставляет не взламываемую CAPTCHA, у которой так же есть еще одна «фича» — помощь в оцифровке книг силами пользователей.
Пример текста, проблемного для OCR, именно такие «проблемные» тексты использует reCAPTCHA
Те, кто особенно озабочен проблемой юзабилити, всегда лестно отзывались о reCAPTCHA. К сожалению, в сети чаще всего встречаются абсолютно непонятные или нечитаемые CAPTCHA, предложение пользователям решить невыполнимую задачу не может хорошо отразиться на юзабилити.
Команда проекта reCAPTCHA делает большие усилия для обеспечения аудио-альтернатив для людей с нарушениями зрения, но множество других CAPTCHA этого типа не имеют подобных вспомогательных средств. Как было упомянуто в исследовании Стэндфордского Университета, выполнение аудио-CAPTCHA занимает много времени. В том же исследовании было обращено внимание на проблемы с выполнением CAPTCHA с английскими словами.
Другая попытка улучшить обыкновенную текстовую CAPTCHA представлена в конце 2010 года компанией Solve Media, чье решение заключалось в том, что бы заменить обычный текст рекламой и связанным с ней вопросом.
Solve Media утверждает, что их CAPTCHA может быть выполнена гораздо быстрее, чем любые другие. Не смотря на то, что большинство относится к подобной маркетинговой болтовне скептически, у данного проекта определенно есть потенциал, особенно учитывая то, что у многих мировых брендов название не зависит от локального языка.
Пока текстовая CAPTCHA имеет некоторые недостатки (к примеру, спамеры могут использовать специальное ПО для распознавания текста в изображении и таким образом преодолеть анти-спам защиту), она все таки бесспорно решаема. Этот факт – камень в огород тех, кто не признает подобную защиту.
Логические задачи
Некоторые люди предполагают, что необходимость дать ответ на простой логический вопрос может быть куда более эффективнее и удобнее, чем выполнение визуальных заданий. Идея заключается в том, что сложность согласованного текста вполне может быть достаточной для того, что бы отправить компьютеры в нокдаун.
Сервис TextCAPTCHA располагает более 180 миллионами вопросов, например:
- Какая буква является шестой в слове «хабрахабр»?
- Как выглядит число пятьдесят восемь тысяч пятьсот семьдесят четыре в виде цифр?
- Какое число из 3, двадцать девять, 70, 46, 65 является наименьшим?
Эти вопросы под силу человеку с интеллектом семилетнего ребенка. Они куда доступнее задач по определению текста или изображения, и пока что это единственный плюс подобного метода. Во-первых, на поиск ответа на такой вопрос может уйти время, так как вопросы необычны и незнакомы рядовым пользователям. Во-вторых, компьютер все еще может преодолеть эту CAPTCHA. Джоэл Ванхорн напомнил всем о сервисе Wolfram Alpha, искусственный интеллект которого вполне достаточен для решения подобных задач.
IBM Watson недавно показал миру устрашающе похожую на человеческую возможность обрабатывать текст, и подобная технология может стать повсеместной быстрее, чем мы думаем. Но вместо тревог о том, что логические вопросы могут стать посильными для компьютеров, мы должны использовать эту технологию для анализа пользовательских данных и отделения человеческого контента от сгенерированного компьютером, который в большинстве случаев является спамом. Сервисы вроде SBlam! активно развивают эту идею.
Специфические вопросы о конкретном сайте, такие как «Как называется этот сайт?» и «Какой цвет доминирует на изображении выше?» могут быть лучше вопросов на общую тему. Но с другой стороны, конечно, количество таких вопросов в любом случае будет смотреться ничтожным рядом с 180 миллионами вопросов от TextCAPTCHA.
Наиболее заметная проблема логических вопросов заключается в том, что они не многоязычны, обычно используется английский язык. Создание базы с сотнями миллионов вопросов на всех языках мира – задача непосильная никому. Когда перспективы столь далеки от идеальных, всплывает вопрос: правильным ли решением является CAPTCHA?
Определение изображений
Много людей экспериментировали с изображениями вместо текста. Выгода? Нет проблем с разборчивостью. Сервисы вроде identiPIC предлагают пользователю определить объект на изображении. Корпорация Microsoft так же исследовала этот метод в своем проекте Asirra.
Microsoft Asirra
Тот факт, что мы не видим распространенности подобной CAPTCHA, означает, что этот метод не улучшает юзабилити. На самом деле, он ставит под угрозу доступность. Люди с проблемным зрением лишены всякого шанса пройти эту CAPTCHA, а добавление какого-либо текста или описания резко снизит эффективность теста.
В 2009 году Google опубликовал исследование (созданное под руководством Рича Госсвейлера, Марьяма Кемвара и Шумита Балуджа), в котором был обращен взгляд на альтернативные формы этого типа CAPTCHA. Проект предлагал пользователям поправить положения изображений, поворачивая их.
Инновационная идея, я уверен, вы согласитесь. Исследование показало превосходство этой техники над другими в плане легкости прохождения теста человеком. К сожалению, этот метод полностью провален в плане доступности (вспомните о людях с проблемным зрением).
Определение друзей
Еще одна действительно интересная CAPTCHA, представленная в январе 2011 года как результат работы интернет-гиганта Facebook. Компания экспериментирует с социальной аутентификацией для подтверждения владения аккаунтом. В чем же заключается этот эксперимент:
Мы покажем вам несколько фотографий ваших друзей и попросим вас назвать того, кто на них изображен. Хакеры на другой стороне планеты могут знать ваш пароль, но не могут знать ваших друзей.— Алекс Райс, Facebook, A Continued Commitment to Security
Тест Facebook на определение друзей
То, что делает нововведение Facebook абсолютно отличным от остальных решений, так это то, что эта CAPTCHA отсеивает не только машин, но и вполне себе человечных злоумышленников.
У Facebook определенно есть перспектива внедрить эту CAPTCHA по всему Интернету. С базой в 600 миллионов пользователей и миллионами сайтов, в которые интегрированы модули Facebook, интернет-гигант может использовать метод определения друзей для аутентификации где угодно. Нельзя забывать и про то, что подобный метод куда легче, чем определение текста.
Есть только одна проблема. Действительно ли вы знаете, кто же ваши друзья? Не секрет, что зачастую запросы дружбы – предмет обмена между пользователями для повышение заветной циферки, отражающей количество друзей. Когда этот список полон абсолютно неизвестных вам персон – едва ли вы пройдете этот тест. Какой бы хорошей идея Facebook ни была, она все равно в конечном итоге обречена на провал, потому, что мы люди – мы нарушаем правила.
Интерактивные CAPTCHA
Существует метод, который привлек нешуточное внимание пользователей за то, что выполнить предлагаемую задачу могут только люди. They Make Apps представила CAPTCHA в виде маленького ползунка, который надо передвинуть в правую сторону для того, что бы подтвердить отправку данных. CAPTCHA сообщает пользователю: «Покажи свою человечность, переведи ползунок на конец линии для создания аккаунта.»
They Make Apps использует CAPTCHA в виде ползунка
Очевидно, этот вариант не подходит для людей с ограниченными способностями. Более того, разработка скрипта, который автоматически бы переводил ползунок для активации кнопки «Отправить» не должна быть сложной. Более продвинутая версия ползунка используется в комментариях в блоге Adafruit. Четыре разных ползунка должны быть установлены в правильное положение для публикации комментария.
CAPTCHA в блоге Adafruit
Более продвинутое решение?
Ни одно из приведенных выше решений не соответствует всем требованиям, которые мы выделили в качестве обязательных для идеальной CAPTCHA. Каждый из вариантов создает неприемлемые препятствия для крупного сегмента пользователей. Мы и пришли к выводу, что пользователи предпочитают классическую текстовую CAPTCHA, и никакую альтернативу они не воспримут как нечто лучшее. Несколько лишних секунд, требуемых от пользователя на решение предложенной задачи, сводит все преимущества метода на нет. Если метод слишком медленный, значит, он не стоит того.
Из всех доступных решений, текстовая CAPTCHA (вроде reCAPTCHA) выглядит наиболее привлекательно. Но вопрос все равно остался открытым: зачем мы просим пользователей выполнять задания? Разумеется, мы можем победить спамеров в их же игре используя автоматические системы, которые будут делать за нас всю работу. Итак, мы пришли к тому, что всегда есть определенная проблема, которую решает CAPTCHA.
Не смотря на превосходство компьютерного интеллекта, большинство механизмов, созданных для спама — тупые. Если отправка данных оканчивается провалом (из-за CAPTCHA или же по какой-либо другой причине), то спам-бот пойдет по своему списку сайтов дальше. Джеф Атвуд наглядно показал это в 2006 году в своей статье “Эффективность CAPTCHA”. Не смотря на исследования в области взлома CAPTCHA, большинство спамеров не желает инвестировать в эти исследования или вообще пользоваться средствами взлома. Приличное количество сайтов, доступных для атаки и скорость, с которой эта атака производится означают, что взлом CAPTCHA не входит в интересы большей части спамеров.
Корпорация BBC является одним из самых тщательных исследователей в этой области в Великобритании. Ее требования к доступности не имеют равных, и недавнее исследование систем CAPTCHA в плане доступности пришло к выразительному и минималистическому ответу: «Нет»:
Участники с проблемным зрением ожидали полной доступности от BBC, и мы почувствовали, что использование подобных систем защиты может подмочить нашу репутацию. Пользователи испытывали некоторые проблемы с искаженным текстом. Логические паззлы показались им слишком необычными. Аудио им тоже не понравилось. В общем, пользователи испытывали к CAPTCHA крайне негативные чувства.— Рован Гайлс, BBC, CAPTCHA and BBC iD
Существуют альтернативные решения, которые помогают избежать автоматической отправки данных компьютерами без использования CAPTCHA, и что более важно, вообще без участия пользователя.
Альтернативы CAPTCHA
CAPTCHA, в ее наилучшем виде, может реализовать свой потенциал в другой области. В качестве защиты для сайтов, к сожалению, она не идеальна. Создавая трудности для пользователей, CAPTCHA порой и не справляется с поставленной задачей. Спамеры, работающие вручную находятся на пике своего успеха, и мы должны вводить более искусные, невидимые методы защиты.
Автоматическое и ручное определение спама
Мы упомянули несколько сервисов по определению спама в самом начале статьи. Akismet, Mollom и SBlam! анализируют полученные от пользователей данные и отмечают спам автоматически. Система Mollom иной раз предлагает ввести CAPTCHA, но только в том случае, если она не уверена. Но почему бы не разработать свою собственную систему, которая будет подогнана специально под нужды, требования и специфику определенного сайта?
Переложив на себя ответственность и снятие бремени с пользователей улучшит их мнение о сайте и увеличит их активность. Ручной контроль контента зачастую является жертвой, которую стоит принести.
Метод «Горшочек Меда»
В 2007 году, Фил Хаак преложил весьма умный метод определения ботов: использование горшочка с медом. Идея проста: форма на сайте содержит дополнительное поле, скрытое от пользователей. Спам-боты обрабатывают и взаимодействуют с исходным HTML-кодом, поэтому они не смогут определить, что поле скрыто. Если в это поле были введены данные, администратор сайта может быть абсолютно уверен, что это сделал не настоящий пользователь.
Метод «горшочек с медом» может быть более эффективным, если обфусцировать скрытие поля методами JavaScript или хэшированием данных. Эти методы не непробиваемы, но мы можем рассчитывать на лучшее.
JavaScript может быть использован для заполнения скрытых полей динамически, что может быть проверено скриптом на стороне сервера. Scratchmedia использует подобное решение наряду с CAPTCHA, если JavaScript отключен.
Можно так же использовать дополнительный таймстамп и данные сессии для определения автоматической отправки. Недавнее обсуждение на сайте Stack Overflow представляло из себя огромное количество примеров и идей насчет этого, включая Hashcash, который доступен в виде плагина для WordPress. Урок по созданию такой защиты средствами jQuery описывает похожий метод и включает в себя интересную мысль:
Воры знают, что если у дома есть внешнее освещение, собака во дворе или другие подобные средства защиты – то в этот дом лучше не соваться. Воры ищут большую выручку с минимальными затратами и риском.— Джек Борн, Safer Contact Forms Without CAPTCHAs
Централизация базы пользователей
С постепенной «социализацией» Интернета, множество сайтов стали предлагать пользователям зарегистрироваться и взаимодействовать друг с другом. Публикация данных на сайт обычно проводится наряду с регистрацией полноценного аккаунта, или же анонимно. Оба этих метода являются открытыми воротами для спама. В 2008 году, Facebook анонсировал Facebook Connect, сервис, который предоставляет сайтам и их пользователям интегрированную платформу на базе социальной сети. Twitter подхватил эстафету в 2009 с похожим сервисом «Войти с помощью Twitter». Оба этих сервиса могут быть встроены на сайт весьма легко, с их помощью можно полностью избавиться от регистрации и форм для комментариев, которые являются целью ботов.
Эти сервисы стали настолько популярными, что появился Janrain.
Сервис Janrain предоставляет свое собственно решение, базированное на вышеупомянутых Facebook Connect, Sign in with Twitter и иже с ними, для того, что бы сделать сайт доступным из любой социальной сети.
Mahalo предоставляет возможность авторизоваться, используя любую социальную сеть с помощью Janrain
Другие сервисы типа Disqus, позволяют пользователям взаимодействовать с помощью встроенной системой защиты от спама и встроенной авторизацией.
Практически полное отсутствие анонимности заставляет пользователей подумать дважды перед отправкой какого-либо контента. Это так же очень эффективно предотвращает спам; стоит удалить одного пользователя Facebook и все сайты с подключенным Facebook Connect стали огорожены от очередного спамера.
Подобные сервисы, разумеется, провоцируют жаркие споры на тему приватности, защиты личных данных… но это уже тема для другой статьи. В качестве альтернативы CAPTCHA эти сервисы имеют огромный потенциал со своей доступностью и юзабилити.
Фиксирование времени, затраченного пользователем
Еще один довольно простой метод, который нисколько не раздражает пользователей, заключается в разделении ботов и пользователей путем измерения затраченного времени на заполнение формы. Вычислением среднего времени, затраченного на заполнение формы, можно разработать определенные правила. К примеру, если на заполнение формы ушло менее пяти секунд, что практически невозможно для человека, то пользователю будет предложено попробовать снова. Напомню: спамер предпочтет более легкие цели и оставить в покое сайт, где попытка использовать автоматическую систему провалилась.
Идеальная CAPTCHA
Судя по многолетнему опыту и исследованиям можно с уверенностью сказать, что CAPTCHA далека от идеала как решение проблемы. Уберем спамеров из уравнения и таким образом мы полностью избавимся от нужды в CAPTCHA; именно на это мы и должны ориентироваться. Идеальная CAPTCHA – отсутствующая CAPTCHA.
Восстание людей
CAPTCHA по своей природе выполняет всего одну функцию – отсеять людей от ботов, тем самым защищать сайт от спама. Но она не может справиться со своей задачей, если спамер не является ботом. Наилучшим решением будет полное избавление от всякой нужды в спаме. Если мы сможем изменить тенденции, превратив спам из крайне прибыльного в чисто убыточное занятие, то тогда он в любом проявлении сойдет на нет.
Одно из множества темных искусств в SEO – искусственная генерация ссылок на сайт под предлогом оптимизации. Поисковые системы считают входящие ссылки весомым показателем ценности. Очевидно, этим злоупотребляют, отправляя подобные ссылки на множестве сайтов (форумы и формы для отправки комментариев идеальны для реализации подобных методов). Польза от SEO настолько высока, что автоматический спам и рядом не стоял. Практика привлечения дешевого человеческого труда достаточно распространена. И CAPTCHA не предназначена для подобных вещей.
Мы должны признать необходимость в модерации и определения ботов в фоне, невидимыми методами. CAPTCHA – лучшее временное решение на данный момент и худшее в целом. Либо бороться со спамом вручную, либо просто забыть про интересы пользователей – выбор за вами.
Выводы
Если владельцы сайтов будут работать сообща для уничтожения спама, то тогда он с течением времени сойдет на нет, и в один прекрасный момент необходимость в CAPTCHA сама собой отпадет. Это слишком идеалистично? Возможно. В реальности, мы скорее увидим тесное сотрудничество технологии и закона для уничтожения спамеров как вида.
Понимание альтернатив (речь идет о тех, где проверка на спам происходит незаметно для пользователя) и встраивание их на сайты – это хороший старт. Это позитивный шаг вперед к улучшению юзабилити и увеличению посещаемости. Если пользователи публикуют контент на вашем сайте, отблагодарите их хорошей защитой от спама:
- Модерация везде, где только возможно
Не разрешайте размещать определенный контент на сайте, или наоборот, разрешайте его публикацию после прохождения проверки аккаунта. Лучше всего использовать сервисы типа Facebook Connect или Disqus; это будет проще и для вас, и для пользователей. - Альтернативы CAPTCHA
Попробуйте использовать метод «горшочек с медом» или любой другой, лишь бы он бы невидимым для пользователей. - Определение с клиентской стороны
Это будет работать просто потому, что пока есть обходные пути, спамеры не будут тратить свое время. Взаимодействие с ключевыми словами или мышью может быть использовано для определения, кто вводит данные, человек или машина. Эта защита не должна быть использована как самостоятельная, но она добавит защищенности сайту. - Определение с серверной стороны
Разработчики должны обратить внимание на определение спама с серверной стороны для мониторинга пользователей и поиска необычной активности. Специальные сервисы типа Akismet доступны и эффективны, но, как уже было сказано, они не могут подстраиваться под специфику вашего сайта. - Общественная модерация
Простая возможность голосовать за контент поможет избавиться от спама.
Абсолютно ясно, учитывая все «за» и «против» CAPTCHA, что будущее за незаметными для пользователя технологиями. На данный момент CAPTCHA должна быть самой крайней мерой.
Оригинал статьи: In Search Of The Perfect CAPTCHA, David Bushell, 03/04/2011.
Перевод довольно вольный, но суть и мысль, передаваемые автором, сохранены. Исключены несколько незначительных фрагментов, каждый с определенной причиной. Например, фрагмент с информацией об изменении алгоритмов Google был удален, так как ссылается на недоступную страницу в блоге Google (404).
Прошу не кидаться ничем нехорошим, мой первый перевод такого объема.
Этот текст распространяется на условиях лицензии «Creative Commons Attribution-NonCommercial-ShareAlike 3.0».
Вы можете копировать, редактировать и использовать не в коммерческих целях этот текст при обязательном указании авторства и сохранении оригинальной лицензии.
Капча — Википедия
Ка́пча[1] (от CAPTCHA — англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которая с лёгкостью решается человеком, но крайне сложна и трудоёмка для компьютера. По состоянию на 2013 год, каждый день пользователями по всей планете вводится примерно 320 миллионов «капчей»[2].
CAPTCHA — товарный знак университета Карнеги — Меллона, разработавшего данный тест.
Искаженная строка smwm
В наиболее распространённом варианте капчи пользователь вводит символы, изображённые на рисунке (зачастую с добавлением помех или полупрозрачности), но так, чтобы было очень затруднительно машинное распознавание текста. По общепринятым нормам доступности интернета для людей со слабым зрением, такая капча должна дополняться вариантом, основанным на распознавании речи (аудио-капча). Также есть капчи, где нужно выбрать правильную картинку из списка[3].
Могут также применяться другие плохо алгоритмизуемые задачи: например, узнать, что находится на картинке, отметить все картинки с кошками, или ответить на вопрос, связанный со знаниями или менталитетом именно людей (например, загадка: «висит груша, нельзя скушать»). Тем не менее, стандартом стало именно распознавание символов: оно не привязано ни к какой культуре (основная помеха — слабое зрение), работает даже на мобильных браузерах, и пользователь со стажем быстро опознаёт картинку как капчу. Возможны также комбинированные капчи.
Недостатком капчи является то, что её не всегда можно разобрать. Из-за этого иногда приходится вводить капчу несколько раз.
Использование уязвимостей[править | править код]
Уязвимость в CAPTCHA
Предположим, картинка с цифрами 1234 вызывается кодом.
<img src="/captcha.php?code=1234" />
Вместо того, чтобы проходить капчу, машина считывает URL и вводит ответ 1234.
При недостаточной квалификации веб-программиста бот может выдать ответ, не проходя тест. Например, по какой-либо информации, содержащейся на странице, компьютер сам, без вмешательства человека, способен правильно ответить на вопрос, на который предположительно мог бы ответить только человек. Либо человек проходит тест один раз, а компьютер фабрикует множество запросов с тем же ответом.
Угадывание[править | править код]
Применяется в первую очередь для «нетрадиционных» капч с небольшим количеством вариантов ответа (1000 и меньше). Робот «гадает», посылая случайные ответы, и некоторые из них оказываются верными.
Использование баз данных[править | править код]
Данный подход эффективен, когда вопросы подготавливаются администратором, а не генерируются машиной. С помощью баз данных можно пройти многие нетрадиционные варианты капчи: например, отметить все картинки с кошками.
Автоматическое распознавание[править | править код]
Очень слабая капча (на примере phpBB) К верхнему изображению применяется отсечка по яркости (всё, что темнее некоторого порога, становится чёрным, остальное — белое). Определяются границы символов, и каждый из них сравнивается с базой символов. Для разбора такой CAPTCHA не нужно даже оптическое распознавание символов, поскольку в ней есть сразу несколько слабых мест:- Лёгкость отделения символов от фона с помощью цветового ключа,
- Лёгкость отделения символов друг от друга,
- Фиксированный и неискажённый шрифт.
После отсечки на буквах образуется случайный узор, поэтому нет стопроцентной гарантии, что все символы будут распознаны (в PWNtcha рейтинг этой CAPTCH’и — 99 %). Но оставшийся один процент совершенно не важен.
В новой линейке форума phpBB (3.x.x) по умолчанию используется усовершенствованная CAPTCHA с использованием библиотеки GD Graphics Library.
Существуют программы (например: PWNtcha), распознающие конкретные реализации капчи. Кроме того, существует возможность подключать модули из программ распознавания текста общего назначения (например: FineReader, OmniPage) в программы сторонних разработчиков для распознавания картинок капчи.
По отношению к автоматизированному распознаванию существуют понятия «слабая капча» и «сильная капча». В числе «слабостей» — фиксированный шрифт, фиксированное положение символов, отсутствие искажений, отделение символов от фона с использованием цветового ключа или размытия по Гауссу, лёгкое отделение символов друг от друга и т. д. Впрочем, иногда бывает, что сильная капча оказывается труднораспознаваемой и для человека, что уже есть неприемлемая крайность. Изредка встречается капча, легко прочитываемая компьютером и с большими трудностями — человеком (например, с неконтрастной картинкой), — такая капча вообще не соответствует назначению капчи как таковой.
Если сгенерированная картинка оказалась нечитаемой, пользователь, как правило, имеет возможность получить новую. Прочная капча должна выдавать картинку с другим ответом[4].
Многие нетрадиционные варианты капчи также на поверку оказались слабыми — «нероботоустойчивыми»[5][6].
Распознавание чужими руками[править | править код]
Есть способ «распознавания», использующий человеческий ресурс с высокопосещаемых сайтов. Робот скачивает капчу с нужного интернет-сервиса и предъявляет её посетителю сайта. Взамен посетитель сайта получает доступ к ресурсу, а робот узнаёт код, изображённый на картинке, и вводит его на «штурмуемом» сайте. Посетитель сайта может и не подозревать, что каждый просмотренный ролик оборачивается регистрацией нового почтового ящика для рассылки спама.
Для защиты (к сожалению, не полной) от такого способа обхода капчи сайт автоматически меняет капчу-картинку, если ответ на неё не ввели сразу (в течение небольшого промежутка времени), — регулярно каждый раз через определённый период времени, или при попытке начать запоздалый ввод ответа.
Есть также специализированные сайты для обмена или продажи капчи.
Капча сама по себе не может остановить спамеров. С другой стороны, этот метод защиты может создавать большие неудобства людям.
К тому же капчей злоупотребляют, например, файловые хостинги, что несёт в массы сервисы по распознаванию капчи и делает её ещё более неэффективной[7].
reCAPTCHA — проект, использующий в роли рабочего элемента для ответов пользователей на капча-запрос неразборчивое для OCR слово, являющееся одним из множества искажённых фрагментов сканированных книг, в дополнение к слову, сгенерированному компьютером. Этот сервис учитывает приёмы использования и возможности программ оцифровки книжных текстов. Для надёжности одно и то же слово предлагается нескольким пользователям различных сайтов. Когда разные пользователи одинаково ответили на CAPTCHA-запрос, предполагается, что они ввели правильное слово.
Что такое капча – recaptcha, captcha и другие виды, зачем нужна
С понятием «Captcha», ее типами «ReCaptcha» и другими сталкивается практически все пользователи компьютера и интернета.
Чаще всего ее видят обычные пользователи при регистрациях на сайтах, при входе в свои аккаунты на сервисах, при отправке комментариев на блогах или при многократном и частом повторении одинаковых действий, например, лайки, репосты, комментирование.
А потому каждому хорошо бы знать — что такое капча, для чего это чудо применяется в интернете при регистрации и в других случаях, в том числе и для заработка 🙂 как вводить капчу, решать и на какие виды она подразделяется.
А некоторые из нас встречаются с ней не только просто бороздя просторы интернета. Например, имея свой сайт, можно добавить на нем нужный вид капчи для защиты от спама или другой пример — можем сталкиваться с ней при работе в программах и даже можем решать ее за деньги.
Поэтому новичку знать о ней основную информацию очень полезно, (а бывает и нужно!) и сейчас я постараюсь разложить все по этой теме в вашей голове по полочкам 🙂
Что такое капча и для чего нужна?
Капча (captcha) — это тест, который разработан в 2000 году и подаваемый нам, компьютерным пользователям, чтобы отличить нас от роботов (ботов), обычно для защиты сайтов от спама.
То есть охраняет ресурсы от автоматических действий на сайтах программами-роботами, например, многократных регистраций, отправок комментариев, добавлений в друзья (если касается соц.сетей) и других…
Ниже пример капчи. Думаю, многие встречали такое при регистрации где-либо (в этом примере — на Яндекс):
Задача пользователя, если столкнулся с капчей такого типа (а их много разных) — пройти ее: правильно вводить все символы с изображения, то есть именно так, как указано. Если не правильно вводим, то фиг нам, а не регистрация 😋 Нужно будет пробовать еще раз, пока не дадите верный ответ.
Практически всегда в форме отображений капч есть кнопка обновления для создания другой задачки, если текущая неразборчива (нечитаема).
Если бы не было такого способа защиты на сайтах, то можно себе представить, насколько вольно бы себя чувствовали разработчики всяких ботов, нацеленных на быстрые регистрации тысяч аккаунтов на одном сайте, множественные репосты, лайки в соц.сетях, массовую отправку комментариев, почтовый спам…
В какой-то мере, интернет сейчас превратился бы в помойку из спама, без внедрения такого «щита». Это когда-то более 20 лет назад в сети еще было более-менее спокойно и подобные оборонительные механизмы не требовались.
Только-только зарождались те умники, решившие найти более простой путь для заработка, для получения новых клиентов, используя для этого массовые регистации, комментарии, короче говоря — спам.
Виды капчи
Как уже упомянул выше, капчи могут быть различных типов, есть попроще, а есть те, которые нам самим сложно сразу решить, что уж там о безмозглых программах говорить 🙂
В некоторых для разгадывания нужно лишь символы повторить с картинки, а где-то решить реальную задачку или пазл, к примеру, собрать, что ботам чаще всего уже не под силу (по крайней мере на данный момент).
Итак, теперь подробнее о видах капч, коих довольно много, причем названия им можно найти разные и постоянно придумываются все новые разновидности, ведь «машины» всё умнеют могут разгадывать сейчас даже весьма сложные задачи!
Поэтому просто разгруппируем их на 3 больших типа, отделив наиболее часто используемые от остальных: captcha, ReCaptcha и другие, например, FunCaptcha.
Что такое captcha
Обычная captcha — картинка или несколько, на которой изображены символы (буквы, цифры) и это такой вариант капчи, что может легко сгенерировать программа или брать стандартные наборы из баз данных.
Что такое recaptcha
ReCaptcha — это отдельная разработка, что была придумана для такой цели, как защита сайтов от спама и, заодно, для помощи в оцифровке книг, журналов, распознавая информацию из изданий.
То есть нам подставляется, как правило, 2 слова из источников, которые мы должны ввести:
Ну а когда рекапчу купила корпорация Google, стали распознавать изображения даже из google карт и аналогичных приложений. Тем самым появился еще один тип рекапчи (версия 2), представляющая собой следующее…
Окно делится на квадраты, на каждом из которых либо отдельное маленькое изображение, либо все они составляют в виде пазла одну большую картинку и наша задача — найти указанные в задании над окном фрагменты изображения.
Пример: «отметьте все изображения, где есть автобусы».
Ну и в 2015 году, появилась капча Recaptcha v3 «Я не робот», которая сейчас считается самой простой, удобной и надежной. Нужно только поставить галочку и она либо сразу будет пройдена, либо при подозрениях у системы защиты, нужно будет решить задачу в виде картинок (версия 2).
Другие виды капчи в интернете
Все остальные виды капчи, которые могут представлять из себя в принципе любые задачи, зависящие от фантазии разработчика.
Поэтому некоторые роботам-спамерам обойти крайне сложно, либо вовсе невозможно, ведь пока что еще компьютер не обрел интеллект как у человека 🙂
Вот несколько примеров:
На рисунке №6 видим так называемую фанкапчу (FunCaptcha), где требуется, используя стрелки, повернуть изображение так, чтобы оно выглядело правильно. Не думаю, что сейчас боты способны легко решить такую задачку, тем более что фигурки подставляются разные.
В примерах 5 и 7 задачка тоже не проста: на одной собрать автомобиль из кусочков пазла, на другой — выбрать недостающий фрагмент изображения. Опять же, в обоих случаях задания будут меняться.
Ну или 1-й пример: выбрать человека с поднятой рукой среди трех вариантов картинок. Пока что не представляю, как программа в данном случае способна определить, во-первых, что требуется сделать, а во-вторых, найти нужную картинку.
Заключение
Что такое капча и ее виды, например, ReCaptcha или FunCaptcha, надеюсь объяснил это доходчиво и вы разобрались в вопросе, а если нет, спросите в комментариях, поясню и заодно статью пополню информацией 😊
Всех встречающихся типов скорее уже не перечислить, ведь программисты создают все новые варианты Captcha, стараясь опередить умнеющие с каждым годом компьютерные «мозги», чтобы защитить сайты от ботов и спама.
Но чаще на сайтах используют 1 и 2 тип, т.е. самую простую капчу из слова и всякие варианты рекапчи. А если администратору ресурса видно, что на него пробивается много ботов, спама, то можно поставить другой вид.
На капче, кстати, еще и заработать можно 🙂 или, наоборот, вложить деньги в автоматическое ее разгадывание, когда нужно без проблем работать в программах, выполняющих автоматические регистрации, отправку комментариев и других действия.
На этом все, если по теме заметки остались у вас вопросы, то можете задать их ниже в комментариях, и я вам все растолкую 🙂
Хорошего вам дня и прекрасного настроения! 😉
ReCaptcha V2 решение капчи через капча-сервис.
Прохождения ReCaptcha v2 возможно двумя путями:
1) Лёгкий но дорогой
Когда Вы отправляете нам только адрес сайта, где вы проходите капчу и Google-токен с этого сайта. В ответ Вы получаете токен для прохождения рекапчи.
Этот метод лёгок в реализации с Вашей стороны: капча проходится без эмуляции браузера и без кликов по капче, но весьма сложен для нас. Т.к. нам приходится открывать рекапчу на своей стороне и показывать её работнику.
Стоимость: 160 руб за 1000 решений
Подробное описание и API: Прохождение ReCaptcha без эмуляции браузера
Для Владельцев Zennoposter: актуальный шаблон тут
2) Сложный но дешёвый
Наш сервис поддерживает решение новой ReCaptcha v2, где нужно поставить галочку и выбрать изображения.
Мы поддерживаем капчи на 9/16/8 клеток.
Схема работы:
0) Вы в браузере открываете страницу с рекапчей
1) Вы ставите галочку
2) Получаете изображение + инструкцию
3) Отправляете нам изображение + инструкцию
4) Получаете от нас ID капчи
5) Через 5 секунд обращаетесь за ответом на капчу
6) Мы предоставляем номера картинок, которые нужно нажать для прохождения капчи
7) Кликаете по указанным изображениям.
Капча отправляется так же, как и обычные капчи (см. API отправки капч), но с дополнительными полями
- Капча на 9\16 квадратов + текстовая инструкция Отправьте доп.параметры:
recaptcha=1
textinstructions=%TEXT%
Где %TEXT% — текст того, что нужно указать (дорожные знаки, пальмы, подарок, вывеска и т.д.) - Капча на 9\16 квадратов + инструкция в картинке Отправьте доп.параметры:
recaptcha=1
imginstructions=img
где «img» картинка инструкции. Её можно отправить multipart и base64
Требования к капче, образцу и тексту:
— Сама капча должна быть либо 300x300px, либо 600x600px, либо 632x632px
— Размер капчи должен быть как есть, на изображения 300х300 мы наложим сетку в 9 квадратов, на изображения 600х600 и 632x632px мы наложим сетку в 16 квадратов
— Капча должна быть меньше 100 Кбайт
-textinstructions должен приходить в кодировке UTF-8
-textinstructions должен содержать только то, что нужно выбрать на капче
-imginstructions должен быть не более 100x100px
-imginstructions должен быть меньше 25Кбайт
API и подробное описание алгоритма: Решение ReCaptcha с пересылкой картинок
Стоимость: 70 руб за 1000 решений