Подтвердить что ты не робот

Рекомендации для java-captcha-библиотек

Я ищу замену JCaptcha, которая, похоже, больше не поддерживается, и с самого начала не очень хорошо. Замена должна хорошо сочетаться с веб-приложениями JavaEE.

Как я вижу, есть три варианта:

  • JCaptcha - больше не поддерживается, сырой API
  • SimpleCaptcha - гораздо приятнее API, лучше качалки, но, похоже, только Java6
  • ReCaptcha - прост в использовании, использует удаленный веб-сервис для создания captchas, но не слишком контролирует внешний вид.

Кто-нибудь использовал любые другие, которые они рекомендовали бы?

4b9b3361

Ответ 1

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

Все остальные карты обычно ограничены своей базой данных или не приносят ничего хорошего в этом мире.

EDIT:: Я нашел шаги по реализации captcha с помощью recaptcha.

Вы можете проверить как Online, так и Offline captcha, используя java здесь

Ответ 2

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

Кроме того, SimpleCaptcha теперь доступен для Java 1.5 или Java 6.

Ответ 3

Что происходит, когда ReCaptcha недоступен/недоступен? Ваш сервис просто останавливается? Вы просто прекращаете подписывать людей, когда это происходит? Вы разрешаете пользователям регистрироваться, даже если ReCaptcha не работает? Если да, каковы последствия этого для безопасности? Особенно, если вы используете CAPTCHA больше, чем просто подписку, например. reset формы паролей, формы входа,... которые неприемлемы для использования без компонента CAPTCHA.

Мир Java CAPTCHA находится в печальном состоянии, причем SimpleCaptcha, по-видимому, является лучшим решением для тех из нас, которые не могут принять размещенную службу.

Ответ 4

Я создал http://kaptcha.googlecode.com, прежде чем recaptcha стал таким же популярным, как сегодня. Он также предлагает вам возможность размещать его самостоятельно, что может потребоваться в некоторых ситуациях.

Kaptcha - это сильно модифицированная и обновленная версия SimpleCaptcha и поддерживает JDK5/6.

Ответ 5

SimpleCaptcha действительно приятный и простой в использовании.

Вот пример использования SimpleCaptcha с JSF 2.0 (домашняя страница имеет пример для JSP)

Обратите внимание, что я даже не хочу хранить значение captcha в bean, я только проверяю его.

bean:

// imports missing here

@ManagedBean
@SessionScoped
public class LoginBean implements Serializable
{
    public void validateCaptcha(FacesContext context,
            UIComponent componentToValidate,
            Object value)
            throws ValidatorException
    {
        HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
        Captcha secretcaptcha = (Captcha) session.getAttribute(Captcha.NAME);
        if (secretcaptcha.isCorrect(value.toString()))
            return;

        // optional: clear field
        ((HtmlInputText) componentToValidate).setSubmittedValue("");

        throw new ValidatorException(new FacesMessage("Captcha does not match"));
    }
}

Соответствующий сегмент лица:

        <h:form id="CaptchaForm">
            Type this: <br/>
            <h:graphicImage id="CaptchaImgID" value="/simpleCaptcha.png"/> <br/>
            <h:inputText id="CaptchaID"
                         required="true"
                         requiredMessage="Captcha missing"
                         validator="#{loginBean.validateCaptcha}"
                         validatorMessage="Captcha does not match"
                         immediate="true">
            </h:inputText>
            <br/>
            <h:commandButton value="Check"/>

            <p/>
            <!-- message for the input field -->
            <h:message id="CaptchaMsgID" for="CaptchaID" style="color:red" />
        </h:form>

Соответствующий сегмент web.xml:

<servlet>
    <servlet-name>SimpleCaptcha</servlet-name>
    <servlet-class>nl.captcha.servlet.SimpleCaptchaServlet</servlet-class>
<init-param>
    <param-name>captcha-width</param-name>
    <param-value>250</param-value>
</init-param>
<init-param>
    <param-name>captcha-height</param-name>
    <param-value>75</param-value>
</init-param>
</servlet>
<servlet-mapping>
    <servlet-name>SimpleCaptcha</servlet-name>
    <url-pattern>/simpleCaptcha.png</url-pattern>
</servlet-mapping>

Наслаждайтесь: -)

Ответ 6

Kaptcha - отличная альтернатива Recaptcha, если вы хотите разместить свой собственный сервис captcha вместо того, чтобы полагаться на услугу третьей стороны (например, recaptcha).

Ответ 7

Мне удалось получить исходный код (один за другим из браузера, а не GIT:-() и построить с 1.5. У меня возникла проблема с версией JDK 1.5, которая забрасывала ошибку версии с неправильным классом (тот, который приходит up, когда скомпилирован с более старой версией java, перепутался), который был разрешен, когда я скопировал jar, который я построил, и он работает как шарм. Я бы настоятельно советовал кому-либо использовать это. Я пробовал jcaptcha, и я должен сказать, что это отстой. посетители в Интернете не должны пытаться проверить код на изображении, который побеждает цель....