альтернативные методы капчи

Эти subprocess.Popen.wait() единственный способ гарантировать, что они мертвы. Действительно, POSIX, ОС требует, чтобы Вы ожидали на своих детях. Многие *nix's создадут процесс "зомби": мертвый ребенок, которого не ожидал родитель.

, Если ребенок довольно правильно написан, это завершается. Часто, дочерние элементы, считанные из КАНАЛА. Закрытие входа является большой подсказкой ребенку, что это должно закрыть магазин и выход.

, Если ребенок имеет ошибки и не завершается, Вам, вероятно, придется уничтожить его. Необходимо исправить эту ошибку.

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

Редактирование.

В стандартной ОС, Вы имеете os.kill( PID, 9 ). Уничтожьте-9, резко, BTW. Если можно уничтожить их с SIGABRT (6?) или SIGTERM (15) это более вежливо.

В Windows OS, Вы не имеете os.kill, который работает. Посмотрите на этот Рецепт ActiveState для завершения процесса в Windows.

у Нас есть дочерние процессы, которые являются серверами WSGI. Для завершения их, мы делаем Получать на специальном URL; это заставляет ребенка мыться и выходить.

8
задан alphthethird 19 September 2009 в 14:32
поделиться

4 ответа

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

Проблема с подходами, основанными на чистых изображениях (в отличие от текстовых изображений), заключается в том, что вы в основном не позволяете слепым пользователям использовать ваш сайт . Автор KittenAuth признал это в одном из комментариев на своем сайте.

Как забавный маленький райдер KittenAuth, на этой странице есть «10 худших капч за все время», включая одну из моих любимых :

calculus captcha

2
ответ дан 5 December 2019 в 23:16
поделиться

Попробуйте использовать систему вызова вопросов, где простой вопрос требует простого познавательного ответа. Например, попросите пользователя ответить на следующий примерный вопрос:

Три машины на улице видны еще три машины. Сколько всего машин?

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

1
ответ дан 5 December 2019 в 23:16
поделиться

Мне особенно нравится пример «какое животное умеет летать». Просто и эффективно.

Но подобными вещами можно злоупотреблять. Нетрудно будет придать ему культурную предвзятость - или предполагаемую.

И, как показал Остин Чейни , это может легко стать своего рода тестом на интеллект, и у вас будет доступность проблема.

1
ответ дан 5 December 2019 в 23:16
поделиться

Короче говоря: вы действительно не знаете о кодировке (наборе символов), используемой в переменных, которые передаются в ваш Скрипт PHP через GET или POST (особенно здесь проблема GET). По соглашению браузеры POST формируют серверный ресурс, указанный в атрибуте action , с использованием кодировки страницы, которая может быть указана с помощью метатега http-Equ -meta-tag ( charset -meta-tag в HTML5) или через HTTP-заголовок. В качестве альтернативы некоторые браузеры также учитывают атрибут accept-charset в форме при выборе правильной кодировки.

Кодирование параметров GET и самого URL-адреса зависит от настроек браузера и, следовательно, может контролироваться пользователь. Вы не должны полагаться на конкретную кодировку.

Как правило, вы обойдете большинство проблем, связанных с кодировкой, последовательно используя UTF-8 для всего и указав правильную кодировку в HTTP-заголовке ( Content-Type: text / html; charset = UTF-8 ) - это даст правильную кодировку (UTF-8) для всех переменных, которые передаются в вашу строку (мы не говорим о сценариях румян, которые намеренно пытаются испортить кодирование, чтобы учесть некоторые векторы атак в вашем скрипте). меня беспокоят пользователи без включенного javascript, я думаю, что это нормально, если они не могут отправить форму. Если они не могут доверять вам включить javascript на вашем сайте, это не ваша вина, что они не могут использовать веб-сайт в полной мере.

РЕДАКТИРОВАТЬ:

См. Также: Практическое использование не на основе изображений Подходы CAPTCHA?

Но проблема в том, что если кто-то намеренно нацеливается на ваш сайт, такая техника не сработает.

РЕДАКТИРОВАТЬ2:

Я не могу предоставить ссылку на реальный пример, но я написал об этом в блоге немного больше деталей, поэтому вот пример кода:

function submit_form()
{
    jQuery.ajax({
      "type": "POST", // or GET
      "url": 'action_url', // The url you wish to send the data to, the url you'd put in the "action" attribute on the form tag
      "data": jQuery("form#the-form").serialize(), // The data you'll send. You need to get the form somehow. Easiest way is to give it an id.
      "dataType": "json", // Only put this if the server sends the response in json format
      "success": function(data, textStatus) // server responded with http status 200
        {
            // This is the happy case: server response has arrived
        },
      "error": function(req, textStatus, errorThrown) // maybe HTTP 404 or HTTP 500
        {
            // something went wrong, the response didn't go through or the response didn't come. Handle the situation: let the user know, or something.
        },
      "complete": function(req, textStatus) // This one always gets called anyway
        {
            // cleanup after yourself
        }   // XXX careful: if you put a comma here, IE6 will fail
      });
}
1
ответ дан 5 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

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