Exemple #1
0
    def get_challenge(self, code):
        data = {}
        for find in re.findall(
                r'<input type=hidden name="([^"]+)" value="([^"]+)">'):
            data[find[0]] = find[1]

        data['adcopy_response'] = code

        url = self.path
        url = url[:url.find('media?c=')] + 'verify.noscript'
        data = util.post(url, data, random_ua=True)

        if not data:
            logging.error('Failed to submit challenge!')
            return None

        info = re.search(r'URL=(http[^"]+)', data)
        if not info:
            return None

        url = info.group(1)

        if self.secure:
            url = url.replace('http://', 'https://')

        data = util.get(url, random_ua=True)
        if data:
            return re.search(r'id=gibberish>([^<]+)', data).group(1)
        else:
            return None
Exemple #2
0
    def get(cls, file, use_first=True):
        if use_first:
            for home in cls.HOME_URLS:
                result = get(home + file)
                if result is not None:
                    return result

            return None
        else:
            results = []
            for home in cls.HOME_URLS:
                result = get(home + file)
                if result is not None:
                    results.append(result)

            return results
Exemple #3
0
    def load(self):
        self.get_challenge_key()

        if self.secure:
            server = 'http://api.solvemedia.com'
        else:
            server = 'https://api-secure.solvemedia.com'

        path = '/papi/challenge.noscript?k='

        self.path = server + path + self.challenge
        self.data = util.get(self.path, random_ua=True)

        if '>error: domain / ckey mismatch' in self.data:
            raise Exception('Domain / ckey mismatch')

        captcha_address = re.search(r'<img src="(/papi/media\?c=[^"]+)',
                                    self.data)
        if not captcha_address:
            captcha_address = re.search(r'src="(/papi/media\?c=[^"]+)',
                                        self.data)

        if captcha_address is None:
            raise Exception('Failed SolveMedia')
        else:
            self.captcha_address = captcha_address
Exemple #4
0
    def ask_for_code(self, link):
        data = util.get('http://api.recaptcha.net/challenge?k=' + self.id_, random_ua=True)
        challenge = re.search(r'challenge.*?:.*?\'(.*)?\',', data)
        server = re.search(r'server.*?:.*?\'(.*?)\',', data)

        if not challenge or not server:
            raise Exception('Failed to get ReCaptcha API response')
        
        self.challenge = challenge.group(1)
        self.server = server.group(1)
        self.captcha_address = self.server + 'image?c=' + self.challenge
        
        while self.tries < self.MAX_TRIES:
            if self.tries > 0:
                self.reload()

            code = self.get_code()

            if not self.challenge or not code:
                raise Exception('Invalid challenge or code!')

            data = {
                'recaptcha_challenge_field': self.challenge,
                'recaptcha_response_field': code
            }

            self.tries += 1
            self.data = util.post(link, data, random_ua=True)

            info = re.search(r'challenge\?k=(.+?)"', self.data)
            if not info:
                # No ID found \o/
                break

            self.id_ = info.group(1).replace('&amp;error=1', '')
Exemple #5
0
    def get_challenge(self, code):
        data = {}
        for find in re.findall(r'<input type=hidden name="([^"]+)" value="([^"]+)">'):
            data[find[0]] = find[1]

        data['adcopy_response'] = code
        
        url = self.path
        url = url[:url.find('media?c=')] + 'verify.noscript'
        data = util.post(url, data, random_ua=True)
        
        if not data:
            logging.error('Failed to submit challenge!')
            return None

        info = re.search(r'URL=(http[^"]+)', data)
        if not info:
            return None

        url = info.group(1)

        if self.secure:
            url = url.replace('http://', 'https://')

        data = util.get(url, random_ua=True)
        if data:
            return re.search(r'id=gibberish>([^<]+)', data).group(1)
        else:
            return None
Exemple #6
0
    def get(cls, file, use_first=True):
        if use_first:
            for home in cls.HOME_URLS:
                result = get(home + file)
                if result is not None:
                    return result

            return None
        else:
            results = []
            for home in cls.HOME_URLS:
                result = get(home + file)
                if result is not None:
                    results.append(result)

            return results
Exemple #7
0
    def reload(self):
        data = util.get('http://www.google.com/recaptcha/api/reload?c=' + self.challenge + '&k=' + self.id_ + '&reason=r&type=image&lang=en', random_ua=True)
        if not data:
            logging.error('Failed to reload ReCaptcha!')
            return False

        challenge = re.search(r'Recaptcha\.finish\_reload\(\'(.*?)\', \'image\'', data)
        if not challenge:
            raise Exception('Failed to reload captcha!')

        self.challenge = challenge.group(1)
        self.captcha_address = self.server + 'image?c=' + self.challenge
Exemple #8
0
    def get_mods(cls):
        mods = []

        for link in cls.get_lines('filenames.txt'):
            data = get(link.strip())

            if data is None:
                continue
            else:
                mods.extend(ModParser().parse(data))

        return mods
Exemple #9
0
    def get_mods(cls):
        mods = []

        for link in cls.get_lines('filenames.txt'):
            data = get(link.strip())

            if data is None:
                continue
            else:
                mods.extend(ModParser().parse(data))

        return mods
Exemple #10
0
    def reload(self):
        data = util.get('http://www.google.com/recaptcha/api/reload?c=' +
                        self.challenge + '&k=' + self.id_ +
                        '&reason=r&type=image&lang=en',
                        random_ua=True)
        if not data:
            logging.error('Failed to reload ReCaptcha!')
            return False

        challenge = re.search(
            r'Recaptcha\.finish\_reload\(\'(.*?)\', \'image\'', data)
        if not challenge:
            raise Exception('Failed to reload captcha!')

        self.challenge = challenge.group(1)
        self.captcha_address = self.server + 'image?c=' + self.challenge
Exemple #11
0
    def process(link, dest):
        data = util.get(link, random_ua=True)
        link_info = BOX_CHECK.match(link)
        info = BOX_EXTRACT.search(data)

        if not info:
            logging.error('Failed to process the download page for "%s"!',
                          link)
            return False

        dl_link = (
            'https://app.box.com/index.php?rm=box_download_shared_file&shared_name=%s&file_id=%s'
            % (link_info.group(1), info.group(1)))

        with open(dest, 'wb') as stream:
            return util.download(dl_link, stream, random_ua=True)
Exemple #12
0
    def process(link, dest):
        data = util.get(link, random_ua=True)
        link_info = BOX_CHECK.match(link)
        info = BOX_EXTRACT.search(data)

        if not info:
            logging.error('Failed to process the download page for "%s"!', link)
            return False

        dl_link = (
            'https://app.box.com/index.php?rm=box_download_shared_file&shared_name=%s&file_id=%s'
            % (link_info.group(1), info.group(1))
        )

        with open(dest, 'wb') as stream:
            return util.download(dl_link, stream, random_ua=True)
Exemple #13
0
    def ask_for_code(self, link):
        data = util.get('http://api.recaptcha.net/challenge?k=' + self.id_,
                        random_ua=True)
        challenge = re.search(r'challenge.*?:.*?\'(.*)?\',', data)
        server = re.search(r'server.*?:.*?\'(.*?)\',', data)

        if not challenge or not server:
            raise Exception('Failed to get ReCaptcha API response')

        self.challenge = challenge.group(1)
        self.server = server.group(1)
        self.captcha_address = self.server + 'image?c=' + self.challenge

        while self.tries < self.MAX_TRIES:
            if self.tries > 0:
                self.reload()

            code = self.get_code()

            if not self.challenge or not code:
                raise Exception('Invalid challenge or code!')

            data = {
                'recaptcha_challenge_field': self.challenge,
                'recaptcha_response_field': code
            }

            self.tries += 1
            self.data = util.post(link, data, random_ua=True)

            info = re.search(r'challenge\?k=(.+?)"', self.data)
            if not info:
                # No ID found \o/
                break

            self.id_ = info.group(1).replace('&amp;error=1', '')
Exemple #14
0
    def load(self):
        self.get_challenge_key()

        if self.secure:
            server = 'http://api.solvemedia.com'
        else:
            server = 'https://api-secure.solvemedia.com'

        path = '/papi/challenge.noscript?k='
        
        self.path = server + path + self.challenge
        self.data = util.get(self.path, random_ua=True)

        if '>error: domain / ckey mismatch' in self.data:
            raise Exception('Domain / ckey mismatch')

        captcha_address = re.search(r'<img src="(/papi/media\?c=[^"]+)', self.data)
        if not captcha_address:
            captcha_address = re.search(r'src="(/papi/media\?c=[^"]+)', self.data)
        
        if captcha_address is None:
            raise Exception('Failed SolveMedia')
        else:
            self.captcha_address = captcha_address