def handleFree(self, pyfile): # Search for Download URL m = re.search(self.LINK_FREE_PATTERN, self.html) if m is None: self.error(_("LINK_FREE_PATTERN not found")) self.link = m.group(1) # Set Timer - may be obsolete m = re.search(self.WAIT_PATTERN, self.html) if m: self.wait(m.group(1)) # Load.to is using solvemedia captchas since ~july 2014: solvemedia = SolveMedia(self) captcha_key = solvemedia.detect_key() if captcha_key: response, challenge = solvemedia.challenge(captcha_key) self.download(self.link, post={ 'adcopy_challenge': challenge, 'adcopy_response': response, 'returnUrl': pyfile.url })
def handle_free(self, pyfile): solvemedia = SolveMedia(self) captcha_key = solvemedia.detect_key() if captcha_key: response, challenge = solvemedia.challenge(captcha_key) self.html = self.load(pyfile.url, post={ 'adcopy_challenge': challenge, 'adcopy_response': response }, decode=True) if self.PASSWORD_PATTERN in self.html: password = self.getPassword() if not password: self.fail(_("No password found")) else: self.logInfo(_("Password protected link, trying: ") + password) self.html = self.load(self.link, post={'downloadp': password}) if self.PASSWORD_PATTERN in self.html: self.fail(_("Incorrect password")) return super(MediafireCom, self).handle_free(pyfile)
def decrypt(self, pyfile): url = pyfile.url if re.match(self.__pattern, url).group(1) == "d": header = self.load(url, just_header=True) if 'location' in header: self.urls = [header['location']] else: self.error(_("Couldn't find forwarded Link")) else: postData = {"post-protect": "1"} self.html = self.load(url) if "link-password" in self.html: postData['link-password'] = self.getPassword() if "altcaptcha" in self.html: for _i in xrange(5): m = re.search(self.SOLVEMEDIA_PATTERN, self.html) if m: captchaKey = m.group(1) captcha = SolveMedia(self) captchaProvider = "Solvemedia" else: self.fail(_("Error parsing captcha")) response, challenge = captcha.challenge(captchaKey) postData['adcopy_challenge'] = challenge postData['adcopy_response'] = response self.html = self.load(url, post=postData) if "The password you entered was incorrect" in self.html: self.fail(_("Incorrect Password")) if not "The CAPTCHA code you entered was wrong" in self.html: break pyfile.package().password = "" soup = BeautifulSoup(self.html) scripts = soup.findAll("script") for s in scripts: if "d_links" in s.text: break m = re.search('d_links":(\[.*?\])', s.text) if m: linkDict = json_loads(m.group(1)) for link in linkDict: if not "http://" in link['full']: self.urls.append("https://safelinking.net/d/" + link['full']) else: self.urls.append(link['full'])
def handleCaptcha(self, inputs): m = re.search(self.CAPTCHA_PATTERN, self.html) if m: captcha_url = m.group(1) inputs['code'] = self.decryptCaptcha(captcha_url) return 1 m = re.search(self.CAPTCHA_BLOCK_PATTERN, self.html, re.S) if m: captcha_div = m.group(1) numerals = re.findall( r'<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div)) self.logDebug(captcha_div) inputs['code'] = "".join( a[1] for a in sorted(numerals, key=lambda num: int(num[0]))) self.logDebug("Captcha code: %s" % inputs['code'], numerals) return 2 recaptcha = ReCaptcha(self) try: captcha_key = re.search(self.RECAPTCHA_PATTERN, self.html).group(1) except Exception: captcha_key = recaptcha.detect_key() else: self.logDebug("ReCaptcha key: %s" % captcha_key) if captcha_key: inputs['recaptcha_response_field'], inputs[ 'recaptcha_challenge_field'] = recaptcha.challenge(captcha_key) return 3 solvemedia = SolveMedia(self) try: captcha_key = re.search(self.SOLVEMEDIA_PATTERN, self.html).group(1) except Exception: captcha_key = solvemedia.detect_key() else: self.logDebug("SolveMedia key: %s" % captcha_key) if captcha_key: inputs['adcopy_response'], inputs[ 'adcopy_challenge'] = solvemedia.challenge(captcha_key) return 4 return 0
def decrypt(self, pyfile): url = pyfile.url if re.match(self.__pattern, url).group(1) == "d": header = self.load(url, just_header=True) if 'location' in header: self.urls = [header['location']] else: self.error(_("Couldn't find forwarded Link")) else: postData = {"post-protect": "1"} self.html = self.load(url) if "link-password" in self.html: postData['link-password'] = self.getPassword() if "altcaptcha" in self.html: for _i in xrange(5): m = re.search(self.SOLVEMEDIA_PATTERN, self.html) if m: captchaKey = m.group(1) captcha = SolveMedia(self) captchaProvider = "Solvemedia" else: self.fail(_("Error parsing captcha")) response, challenge = captcha.challenge(captchaKey) postData['adcopy_challenge'] = challenge postData['adcopy_response'] = response self.html = self.load(url, post=postData) if "The password you entered was incorrect" in self.html: self.fail(_("Incorrect Password")) if not "The CAPTCHA code you entered was wrong" in self.html: break pyfile.package().password = "" soup = BeautifulSoup.BeautifulSoup(self.html) scripts = soup.findAll("script") for s in scripts: if "d_links" in s.text: break m = re.search('d_links":(\[.*?\])', s.text) if m: linkDict = json_loads(m.group(1)) for link in linkDict: if not "http://" in link['full']: self.urls.append("https://safelinking.net/d/" + link['full']) else: self.urls.append(link['full'])
def handleCaptcha(self, inputs): m = re.search(self.CAPTCHA_PATTERN, self.html) if m: captcha_url = m.group(1) inputs['code'] = self.decryptCaptcha(captcha_url) return 1 m = re.search(self.CAPTCHA_BLOCK_PATTERN, self.html, re.S) if m: captcha_div = m.group(1) numerals = re.findall(r'<span.*?padding-left\s*:\s*(\d+).*?>(\d)</span>', html_unescape(captcha_div)) self.logDebug(captcha_div) inputs['code'] = "".join(a[1] for a in sorted(numerals, key=lambda num: int(num[0]))) self.logDebug("Captcha code: %s" % inputs['code'], numerals) return 2 recaptcha = ReCaptcha(self) try: captcha_key = re.search(self.RECAPTCHA_PATTERN, self.html).group(1) except Exception: captcha_key = recaptcha.detect_key() else: self.logDebug("ReCaptcha key: %s" % captcha_key) if captcha_key: inputs['recaptcha_response_field'], inputs['recaptcha_challenge_field'] = recaptcha.challenge(captcha_key) return 3 solvemedia = SolveMedia(self) try: captcha_key = re.search(self.SOLVEMEDIA_PATTERN, self.html).group(1) except Exception: captcha_key = solvemedia.detect_key() else: self.logDebug("SolveMedia key: %s" % captcha_key) if captcha_key: inputs['adcopy_response'], inputs['adcopy_challenge'] = solvemedia.challenge(captcha_key) return 4 return 0
def handle_free(self, pyfile): # Click the free user button post_data = { 'op': "download1", 'usr_login': "", 'id': self.info['pattern']['ID'], 'fname': pyfile.name, 'referer': "", 'method_free': "+" } self.html = self.load(pyfile.url, post=post_data, decode=True) solvemedia = SolveMedia(self) response, challenge = solvemedia.challenge() # Make the downloadlink appear and load the file m = re.search(self.RAND_ID_PATTERN, self.html) if m is None: self.error(_("Random key not found")) rand = m.group(1) self.logDebug("rand = ", rand) post_data = { 'op': "download2", 'id': self.info['pattern']['ID'], 'rand': rand, 'referer': pyfile.url, 'method_free': "+", 'method_premium': "", 'adcopy_response': response, 'adcopy_challenge': challenge, 'down_direct': "1" } self.html = self.load(pyfile.url, post=post_data, decode=True) m = re.search(self.LINK_FREE_PATTERN, self.html) if m is None: self.error(_("Download url not found")) self.link = m.group(1)
def handleFree(self, pyfile): # Click the free user button post_data = {'op' : "download1", 'usr_login' : "", 'id' : self.info['pattern']['ID'], 'fname' : pyfile.name, 'referer' : "", 'method_free': "+"} self.html = self.load(pyfile.url, post=post_data, decode=True) solvemedia = SolveMedia(self) response, challenge = solvemedia.challenge() # Make the downloadlink appear and load the file m = re.search(self.RAND_ID_PATTERN, self.html) if m is None: self.error(_("Random key not found")) rand = m.group(1) self.logDebug("rand = ", rand) post_data = {'op' : "download2", 'id' : self.info['pattern']['ID'], 'rand' : rand, 'referer' : pyfile.url, 'method_free' : "+", 'method_premium' : "", 'adcopy_response' : response, 'adcopy_challenge': challenge, 'down_direct' : "1"} self.html = self.load(pyfile.url, post=post_data, decode=True) m = re.search(self.LINK_FREE_PATTERN, self.html) if m is None: self.error(_("Download url not found")) self.link = m.group(1)
def handle_free(self, pyfile): # Search for Download URL m = re.search(self.LINK_FREE_PATTERN, self.html) if m is None: self.error(_("LINK_FREE_PATTERN not found")) self.link = m.group(1) # Set Timer - may be obsolete m = re.search(self.WAIT_PATTERN, self.html) if m: self.wait(m.group(1)) # Load.to is using solvemedia captchas since ~july 2014: solvemedia = SolveMedia(self) captcha_key = solvemedia.detect_key() if captcha_key: response, challenge = solvemedia.challenge(captcha_key) self.download(self.link, post={'adcopy_challenge': challenge, 'adcopy_response' : response, 'returnUrl' : pyfile.url})
def handleFree(self, pyfile): solvemedia = SolveMedia(self) captcha_key = solvemedia.detect_key() if captcha_key: response, challenge = solvemedia.challenge(captcha_key) self.html = self.load(pyfile.url, post={'adcopy_challenge': challenge, 'adcopy_response' : response}, decode=True) if self.PASSWORD_PATTERN in self.html: password = self.getPassword() if not password: self.fail(_("No password found")) else: self.logInfo(_("Password protected link, trying: ") + password) self.html = self.load(self.link, post={'downloadp': password}) if self.PASSWORD_PATTERN in self.html: self.fail(_("Incorrect password")) return super(MediafireCom, self).handleFree(pyfile)