Пример #1
0
    def recaptcha(self, pattern, page, extra_fields=None):
        #find catpcha and prompt captcha window
        #return source
        from addons.captcha.recaptcha import Recaptcha

        if self.is_running():
            try:
                m = self.get_match(pattern, page)
                if m is not None:
                    link = "http://www.google.com/recaptcha/api/challenge?k=%s" % m.group('key')
                    for retry in range(3):
                          c = Recaptcha(misc.get_host(self.link), link, self.wait_func)
                          c.run_captcha()
                          if c.solution is not None:
                             page = self.recaptcha_post(pattern, page, c.captcha_challenge, c.solution, extra_fields)
                             if self.recaptcha_success(pattern, page) or not self.is_running():
                                  return page
                          else:
                              raise CaptchaException("No response from the user")
                    raise CaptchaException("Captcha, max retries reached")
                else:
                    return page
            except CaptchaException as err:
                self.err_msg = err
                logger.debug(err)
        return page
Пример #2
0
    def recaptcha(self, pattern, page, extra_fields=None):
        #find catpcha and prompt captcha window
        #return source
        from addons.captcha.recaptcha import Recaptcha

        if self.is_running():
            try:
                m = self.get_match(pattern, page)
                if m is not None:
                    link = "http://www.google.com/recaptcha/api/challenge?k=%s" % m.group(
                        'key')
                    for retry in range(3):
                        c = Recaptcha(misc.get_host(self.link), link,
                                      self.wait_func)
                        c.run_captcha()
                        if c.solution is not None:
                            m, page = self.recaptcha_post(
                                pattern, page, c.captcha_challenge, c.solution,
                                extra_fields)
                            if not self.is_running() or m is None:
                                return page
                        else:
                            raise CaptchaException("No response from the user")
                    raise CaptchaException("Captcha, max retries reached")
                else:
                    return page
            except CaptchaException as err:
                self.err_msg = err
                logger.debug(err)
        return page