Капча с Google AppEngine - PullRequest
       17

Капча с Google AppEngine

1 голос
/ 15 октября 2010

У меня есть веб-сайт, на котором i want to put a custom made captcha, я не могу использовать онлайн-сервисы проверки безопасности из-за требований макета. Он работает на Google Appengine. Есть ли в appengine API что-то для написания символов на заданном изображении?

Я прошел через appengine Python Image API , но, похоже, это не очень помогает.

Любые предложения, как сгенерировать капчу в инфраструктуре Google Appengine?

Ответы [ 5 ]

8 голосов
/ 15 октября 2010

Быстрый поиск в Google предоставит вам множество руководств по интеграции служб Captch с вашим приложением AppEngine. Вот один , который использует reCaptcha.

2 голосов
/ 15 октября 2010

Как правило, вы не можете.

API изображений предназначен для преобразования существующих изображений, а не создания новых.

Теоретически, если вы найдете чистую библиотеку создания изображений Python, она будет работатьв App Engine, но это будет медленно.

Почему бы просто не использовать внешнюю службу CAPTCHA?

1 голос
/ 24 января 2013

Я бы предложил использовать сторонний сервис, такой как reCaptcha, но в случае, если вам действительно нужно предоставить собственную реализацию, вы можете использовать недавно представленный Matplotlib для GAE + Python для генерации ваших собственных изображений.

Matplotlib - это библиотека черчения для Python, недавно она была представлена ​​как часть GAE в декабре 2012 года. Вы можете использовать Matplotlib для визуализации текста, как показано в в этом примере . Если у вас есть эстетические ограничения для вашей капчи, вы можете визуализировать очень причудливый текст и цифры с помощью Matplotlib. Посмотрите на этот пример .

1 голос
/ 15 октября 2010

Вместо создания своего собственного импл. Я рекомендую использовать надежный сервис, такой как reCaptcha: http://www.google.com/recaptcha

0 голосов
/ 13 июня 2013

Вы можете использовать следующий код для создания капчи. Обратите внимание, что вам нужно добавить commons-lang-2.5.jar в ваш путь к классам.

        String secutiryCode = RandomStringUtils.random(5, new char[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'});
        req.getSession().setAttribute("secutiryCode", secutiryCode);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        URL url = new URL("http://util.krispot.com/util/SecurityImage.jpg?secutiryCode=" + secutiryCode);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
            BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
            for(int i = bis.read(); i > -1;i = bis.read()) {
                baos.write(i);
            }
        BufferedOutputStream bos = new BufferedOutputStream(resp.getOutputStream());
        bos.write(baos.toByteArray());
        bos.close();

Спасибо, Навдип Сингх

...