Практические подходы CAPTCHA, не основанные на изображениях?

Я придумал решение, которое работает, но не красиво. Я использовал пакет https://github.com/hzdg/django-enumfields , чтобы помочь с этим.

Я создал свое собственное поле формы:

class EnumChoiceField(enumfields.forms.EnumChoiceField):
    def __init__(self, enum, *, coerce=lambda val: val, empty_value='', **kwargs):
        if isinstance(enum, six.string_types):
            self.enum = import_string(enum)
        else:
            self.enum = enum

        super().__init__(coerce=coerce, empty_value=empty_value, **kwargs)

И использовал его в моей форме Django. Затем в моем собственном AppConfig я сделал это:

class CoreAppConfig(AppConfig):
    name = 'myapp.core'

    def ready(self):
        registry = get_global_registry()

        @convert_form_field.register(EnumChoiceField)
        def convert_form_field_to_enum(field: EnumChoiceField):
            converted = registry.get_converted_field(field.enum)
            if converted is None:
                raise ImproperlyConfigured("Enum %r is not registered." % field.enum)
            return converted(description=field.help_text, required=field.required)

И, наконец, в моей схеме:

UnitEnum = Enum.from_enum(Unit)
get_global_registry().register_converted_field(Unit, UnitEnum)

Мне действительно это не нравится, но я не мог придумать лучшего способа чтобы справиться с этим. Я столкнулся с этой идеей при поиске другой проблемы с графеновым джанго здесь https://github.com/graphql-python/graphene-django/issues/481#issuecomment-412227036 .

Я чувствую, что у есть , чтобы быть лучшим способом сделать это.

318
задан 9 revs, 8 users 45% 31 March 2012 в 22:23
поделиться

92 ответа

Мое предложение было бы капчой ASCII, оно не использует изображение, и это - программист / гиковский. Вот реализация PHP http://thephppro.com/products/captcha/ , этот - заплаченный. Существует свободное, также реализация PHP, однако я не мог найти пример-> http://www.phpclasses.org/browse/package/4544.html

, я знаю, что они находятся в PHP, но я уверен Вы, умные парни, создающие ТАК, могут 'портировать' его на Ваш любимый язык.

1
ответ дан UnkwnTech 23 November 2019 в 01:00
поделиться

Я недавно (не может помнить, где), видел систему, которая показала набор изображений. Каждому из изображений присвоили символ ему. Пользователя тогда попросили ввести в символах для некоторых изображений, которые показали примеры некоторой категории (автомобили, компьютеры, здания, цветы и так далее). Изображения и символы изменились каждый раз, а также категории для создания строки КАПЧИ.

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

1
ответ дан 2 revs 23 November 2019 в 01:00
поделиться

Я думаю, что они работают над регулировкой. Это имело бы больше смысла только, чтобы отключить КАПЧУ для пользователей с 500 + представитель и сбросить представителя взломщиков.

1
ответ дан Akira 23 November 2019 в 01:00
поделиться

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

нет ничего худшего, чем наличие текста, который Вы не можете прочитать правильно...

1
ответ дан Thomi 23 November 2019 в 01:00
поделиться

@rob

Что относительно капчи ловушки? Ничего себе, настолько простой! Хорошие взгляды! Хотя они выделили проблему доступности.. Вы думаете, что это было бы проблемой в ТАК? Мне лично трудно вообразить разработчиков/программистов, которые испытывают затруднения при чтении экрана в точку, где им нужна программа экранного доступа?

существуют разработчики, которые не являются просто юридически слепыми, но и на 100% слепыми. Обход тростника и собаки помощника. Я надеюсь, что сайт будет поддерживать их разумным способом.

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

1
ответ дан Derek Park 23 November 2019 в 01:00
поделиться

Одним путем я знаю об избавиться от ботов, должен сохранить ключ в cookie пользователя и если ключ или cookie не делают существующий, предполагают, что они - бот и игнорируют их или отступают в КАПЧЕ изображения. Это - также действительно хороший способ предотвратить набор сессий/отслеживания, создаваемых для ботов, которые могут добавить много шума к Вашему DB или наверху к Вашей производительности системы.

1
ответ дан iamgoat 23 November 2019 в 01:00
поделиться

@pc1oad1etter я также заметил это после выполнения моего сообщения. Однако это - просто идея а не фактическая реализация. Варьируясь шрифт или использование различных цветов вместо полужирного / курсива легко решили бы проблемы удобства использования.

1
ответ дан Jarod Elliott 23 November 2019 в 01:00
поделиться

Мое решение состояло в том, чтобы поместить форму на отдельной странице и передать метку времени ей. На той странице я только отображаю форму, если метка времени допустима (не слишком быстро, не слишком стара). Я нашел, что боты будут всегда поражать страницу представления непосредственно, и только люди перешли бы там правильно.

не будет работать, если у Вас будет форма на самой странице содержания как Вы, делают теперь, но Вы могли показать/скрыть ссылку на специальную страницу представления на основе NoScript. Незначительный inconvienience для такого небольшого процента пользователей.

2
ответ дан 3 revs, 2 users 63% 23 November 2019 в 01:00
поделиться

Используйте простую текстовую КАПЧУ и затем попросите, чтобы пользователи ввели ответ назад или только первую букву или последнее, или другая случайная вещь.

Другая идея состоит в том, чтобы сделать изображение ASCII, как это (от Портала игровой последовательности конца):

                             .,---.
                           ,/XM#MMMX;,
                         -%##########M%,
                        -@######%  $###@=
         .,--,         -H#######$   $###M:
      ,;$M###MMX;     .;##########$;HM###X=
    ,/@##########H=      ;################+
   -+#############M/,      %##############+
   %M###############=      /##############:
   H################      .M#############;.
   @###############M      ,@###########M:.
   X################,      -$=X#######@:
   /@##################%-     +######$-
   .;##################X     .X#####+,
    .;H################/     -X####+.
      ,;X##############,       .MM/
         ,:+$H@M#######M#$-    .$=
              .,-=;+$@###X:    ;/=.
                     .,/X$;   .::,
                         .,    ..  

И дают пользователю некоторые опции как: A, ЛГИТЕ, РАЗБИТОЕ СЕРДЦЕ, ПИРОГ.

2
ответ дан 2 revs, 2 users 93% 23 November 2019 в 01:00
поделиться

Просто будьте осторожны относительно культурной предвзятости в любой основанной на вопросе КАПЧЕ.

Предвзятость в Аналитике, Тестирующей

2
ответ дан 2 revs, 2 users 80% 23 November 2019 в 01:00
поделиться

Одна вещь, которая является экранирующей, состоит в том, как Google, по-видимому, компания с большинством докторов философии CS в мире могла повредить их Капчу и, казаться, ничего не делала с этим.

1
ответ дан Chris S 23 November 2019 в 01:00
поделиться

Какой цвет является пятым словом этого предложения? красный?, синий, зеленый?

(окрашивают слова соответственно)

1
ответ дан myg204 23 November 2019 в 01:00
поделиться

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

, Что делает следующее среднее объявление функции C: char *(*(**foo [][8])())[];?

=)

1
ответ дан Sergio Acosta 23 November 2019 в 01:00
поделиться

Я рекомендую вопросы о мелочах. Не все могут понять представления ASCII букв, и вопросы о математике больше чем с одной операцией могут стать сбивающими с толку.

1
ответ дан IChrisI 23 November 2019 в 01:00
поделиться

Изображение могло быть создано на стороне клиента из основанной на векторе информации, переданной с сервера.

Это должно уменьшить обработку на сервере, и объем данных передал провод.

1
ответ дан pro 23 November 2019 в 01:00
поделиться

У меня есть несколько решений, то, которое требует JavaScript и другого, который не делает. Обоих более трудно победить, чем, что является 7 + 4, все же они не так тверды к глазам плакатов как reCaptcha. Я предложил эти решения, так как у меня должна быть капча для AppEngine, который представляет более ограниченную среду.

Так или иначе вот ссылка на демонстрацию: http://kevin-le.appspot.com/extra/lab/captcha/

1
ответ дан Kevin Le - Khnle 23 November 2019 в 01:00
поделиться

Я думаю, что изготовленная на заказ КАПЧА является Вашим лучшим выбором. Таким образом, это требует, чтобы специфически целенаправленный бот/сценарий взломал его. Этот фактор усилия должен сократить количество попыток. Люди являются ленивым afterall

1
ответ дан Andrew Harry 23 November 2019 в 01:00
поделиться

Мне нравится капча, которая используется в «большой сети ромов»: текст ссылки

Нажмите на цветной смайлик, это смешно, и все могут понять ... кроме ботов, ха-ха

1
ответ дан 23 November 2019 в 01:00
поделиться

Просто выбросить туда.

1
ответ дан 23 November 2019 в 01:00
поделиться
1
ответ дан 23 November 2019 в 01:00
поделиться

Я уверен, что большинство страниц построено с элементами управления (кнопки, ссылки и т. Д.), Которые поддерживают наведение курсора мыши.

  • Вместо того, чтобы показывать изображения и предлагать пользователю ввести контент, попросите пользователя навести указатель мыши на любой элемент управления (выбрать элемент управления в случайном порядке (любая кнопка или ссылка)).
  • И применить цвет к элемент управления (какой-то случайный цвет) при наведении указателя мыши (небольшой JavaScript помогает) ..
  • затем позволяет пользователю ввести цвет, который он / она видел при наведении курсора мыши.

Это просто другой подход, я фактически не реализовал этот подход. Но это возможно.

2
ответ дан 23 November 2019 в 01:00
поделиться

У меня возникла идея, когда я увидел видео о Human Computing (видео о том, как использовать людей для маркировки изображений в играх) для создания системы капчи. Можно использовать такую ​​систему для пометки изображений (возможно, для какой-то другой цели), а затем использовать статистику о тегах для выбора изображений, подходящих для использования капчи.

Скажем, изображение, где> 90% людей пометили изображение с помощью ' кошка »или« небоскреб ». Затем можно было бы представить изображение с просьбой указать наиболее очевидную особенность изображения, которая будет доминирующим тегом для изображения.

Это, вероятно, выходит за рамки SO, но кому-то это может показаться интересной идеей :)

1
ответ дан 23 November 2019 в 01:00
поделиться

Here's my captcha effort:

The security number is a spam prevention measure and is located in the box
of numbers below. Find it in the 3rd row from the bottom, 3rd column from
the left.

208868391   241766216   283005655   316184658   208868387   241766212   

241766163   283005601   316184603   208868331   241766155   283005593   

241766122   283005559   316184560   208868287   241766110   283005547   

316184539   208868265   241766087   283005523   316184523   208868249   

208868199   241766020   283005455   316184454   208868179   241766000   

316184377   208868101   241765921   283005355   316184353   208868077   

Of course the numbers are random as is the choice of row and collumn and the choice of left/right top/bottom. One person who left a comment told me the 'security question sucks dick btw':

http://jwm-art.net/dark.php?p=louisa_skit

to see in action click 'add comment'.

1
ответ дан 23 November 2019 в 01:00
поделиться

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

Все мои решения предназначены для малых и средних веб-сайтов (как и большинство решений в этой теме).
Это означает, что они предотвращают отправку сообщений спам-ботами, если только они не применяют специальный обходной путь для вашего веб-сайта (когда вы are big)


Я обнаружил одно довольно приятное решение: спам-бот не посещает вашу статью раньше 48 часов после того, как вы ее разместили . Поскольку статья на новостном веб-сайте получает больше всего просмотров через 48 часов после публикации, он позволяет незарегистрированным пользователям оставлять комментарии, не вводя капчу.


Еще одна хорошая система капчи, которую я видел, была создана WebDesignBeach .
У вас есть несколько объектов, и вы должны перетащить один в определенную зону. Довольно оригинально, не так ли?

2
ответ дан 23 November 2019 в 01:00
поделиться

Одна опция была бы внеполосной коммуникацией; сервер мог отправить пользователю мгновенное сообщение (или SMS-сообщение?), что он тогда должен ввести в поле капчи.

Это передает "альтернативное" требование к пользователю - или необходимо включить JavaScript, ИЛИ Вы должны быть зарегистрированы на своем предпочтительном сервисе IM. В то время как это, возможно, не столь гибко как некоторые из других решений выше, это работало бы на подавляющее большинство пользователей.

Те с полномочиями редактирования, не стесняйтесь добавлять к Профессионалам/Недостаткам вместо того, чтобы отправить отдельный ответ.

Профессионалы:

  • Доступный: Многие клиенты IM поддерживают чтение входящих сообщений. Некоторые веб-клиенты будут работать с программами экранного доступа.

Недостатки:

  • отключенные JavaScript пользователи теперь зависят от времени работы еще одного сервиса сверху OpenID.
  • Боты вызовут дополнительное использование ресурсов сервера (отправляющий внеполосную связь), если дополнительные защиты не будут реализованы
-3
ответ дан 3 revs 23 November 2019 в 01:00
поделиться

Как насчет того, чтобы просто проверить, чтобы видеть, включен ли JavaScript?

Любой использующий этот сайт, конечно, собирается включить его. И от того, что говорят люди, Спам-роботам не включат JavaScript.

1
ответ дан 2 revs, 2 users 57% 23 November 2019 в 01:00
поделиться

КАПЧИ проверяют, люди ли Вы или компьютер. Проблема состоит в том, что после этого компьютер должен судить, люди ли Вы.

, Таким образом, решение состояло бы в том, чтобы позволить одному пользователю заполнить КАПЧУ и позволить следующему пользователю проверить его. Проблемой является, конечно, разрыв времени.

1
ответ дан 2 revs, 2 users 62% 23 November 2019 в 01:00
поделиться

Много этих решений JavaScript работает с программами экранного доступа? И изображения минус значимый атрибут высокого звука, вероятно, повреждаются WCAG.

1
ответ дан 2 revs, 2 users 67% 23 November 2019 в 01:00
поделиться

@lance

, Кто говорит Вас, должен создать все изображения на сервере с каждым запросом? Возможно, Вы могли иметь статический список изображений или вытянуть их от Flickr. Мне нравится, "нажимают на котенка" идея КАПЧИ. http://www.thepcspy.com/kittenauth .

, Если Вы вытягиваете из статического списка изображений, это становится тривиальным для хитрости КАПЧИ, потому что человек может классифицировать их, и затем бот был бы в состоянии ответить на проблемы легко. Даже если бот не может ответить на всех них, он может все еще послать спам. Это только должно быть в состоянии ответить на маленький процент КАПЧЕЙ, потому что это может всегда просто повторять, когда попытка перестала работать.

Это - на самом деле проблема с загадками и таким также, потому что чрезвычайно трудно иметь большой набор проблем.

1
ответ дан 3 revs, 2 users 75% 23 November 2019 в 01:00
поделиться

Как насчет того, чтобы просто использовать ASP.NET Ajax NoBot? Это, кажется, работает ПРИЛИЧНО на меня. Это не является удивительно большим, но достойным.

1
ответ дан 2 revs, 2 users 67% 23 November 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: