66

JCaptchaの代替品を探していますが、これはもうメンテナンスされていないようで、そもそもあまり良くありません。代替品は、JavaEEWebアプリケーションとうまく統合する必要があります。

私が見ることができるように、3つのオプションがあります:

  • JCaptcha-もはや維持されていない、粗いAPI
  • SimpleCaptcha-より優れたAPI、より優れたキャプチャですが、Java6のみのようです
  • ReCaptcha-使いやすく、リモートWebサービスを使用してキャプチャを生成しますが、ルックアンドフィールをあまり制御できません

誰かが他の人を使ったことがありますか?

4

6 に答える 6

72

私はSimpleCaptchaの作者です。人類のために、可能な限りReCaptchaを使用することをお勧めしますが、ReCaptchaのようなライブラリを禁止するポリシーがある組織があるため、SimpleCaptchaを提供しました。SimpleCaptchaは、外部依存関係のない完全にスタンドアロンであることが意図されています。J2EEコンテナー内にいる限り、問題はありません。

また、SimpleCaptchaはJava1.5またはJava6で使用できるようになりました。

于 2010-12-24T20:31:59.197 に答える
26

ReCaptchaは、ほぼ無制限のデータベースで世界をより良くする(OCR結果を古いテキストに改善する)唯一のキャプチャであるため、使用する必要がある唯一のキャプチャです。

他のすべてのキャプチャは通常、データベースによって制限されているか、この世界に何の役にも立ちません。

編集::私はrecaptchaを使用してキャプチャを実装する方法の手順を見つけました。

ここでJavaを使用してオンラインとオフラインの両方のキャプチャを確認できます

于 2009-05-01T07:22:08.507 に答える
20

ReCaptchaがダウン/使用不可になるとどうなりますか?あなたのサービスは単に停止しますか?ダウンしているときにサインアップをやめるだけですか?ReCaptchaが実行されていなくても、ユーザーがサインアップできるようにしますか?もしそうなら、これのセキュリティへの影響は何ですか?特に、パスワードフォームのリセット、ログインフォームなど、サインアップ以外の目的でCAPTCHAを使用する場合は、CAPTCHAコンポーネントなしでは使用できません。

CAPTCHAのJavaの世界は悲しい状態にあり、SimpleCaptchaは、ホストされたサービスを受け入れることができない私たちにとって最良の解決策のようです。

于 2009-08-03T09:54:54.133 に答える
11

私はhttp://kaptcha.googlecode.comを作成してから、recaptchaが今日のように人気を博しました。また、状況によっては必要になる場合がある、自分でホストする機能も提供します。

Kaptchaは、SimpleCaptchaの大幅に変更および更新されたバージョンであり、JDK5/6をサポートします。

于 2010-02-02T06:30:53.763 に答える
5

SimpleCaptchaは本当に素晴らしくて使いやすいです。

SimpleCaptchaをJSF2.0で使用する方法の例を次に示します(ホームページにはJSPの例があります)

キャプチャ値を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>

楽しみ :-)

于 2011-01-31T17:48:24.227 に答える
3

Kaptchaは、サードパーティのキャプチャサービス(recaptchaなど)に依存するのではなく、独自のキャプチャサービスをホストする場合に、Recaptchaの優れた代替手段です。

于 2010-07-06T21:42:31.457 に答える