def downloadFree(self): self.logDebug("Free download") # Get initial page self.html = self.load(self.pyfile.url) url = self.pyfile.url + "?start=1" self.html = self.load(url) self.handleErrors() finalUrl = re.search(self.FILE_LINK_PATTERN, self.html) if not finalUrl: self.doWait(url) chall = re.search(self.CAPTCHA_TYPE1_PATTERN, self.html) chall2 = re.search(self.CAPTCHA_TYPE2_PATTERN, self.html) if chall or chall2: for i in range(5): re_captcha = ReCaptcha(self) if chall: self.logDebug("Captcha type1") challenge, result = re_captcha.challenge( chall.group(1)) else: self.logDebug("Captcha type2") server = chall2.group(1) challenge = chall2.group(2) result = re_captcha.result(server, challenge) postData = { "recaptcha_challenge_field": challenge, "recaptcha_response_field": result } self.html = self.load(url, post=postData) self.handleErrors() chall = re.search(self.CAPTCHA_TYPE1_PATTERN, self.html) chall2 = re.search(self.CAPTCHA_TYPE2_PATTERN, self.html) if chall or chall2: self.invalidCaptcha() else: self.correctCaptcha() break finalUrl = re.search(self.FILE_LINK_PATTERN, self.html) if not finalUrl: self.fail("Couldn't find free download link") self.logDebug("got download url %s" % finalUrl.group(1)) self.download(finalUrl.group(1))
def downloadFree(self): self.logDebug("Free download") # Get initial page self.html = self.load(self.pyfile.url) url = self.pyfile.url + "?start=1" self.html = self.load(url) self.handleErrors() finalUrl = re.search(self.FILE_LINK_PATTERN, self.html) if not finalUrl: self.doWait(url) chall = re.search(self.CAPTCHA_TYPE1_PATTERN, self.html) chall2 = re.search(self.CAPTCHA_TYPE2_PATTERN, self.html) if chall or chall2: for i in range(5): re_captcha = ReCaptcha(self) if chall: self.logDebug("Captcha type1") challenge, result = re_captcha.challenge(chall.group(1)) else: self.logDebug("Captcha type2") server = chall2.group(1) challenge = chall2.group(2) result = re_captcha.result(server, challenge) postData = {"recaptcha_challenge_field": challenge, "recaptcha_response_field": result} self.html = self.load(url, post=postData) self.handleErrors() chall = re.search(self.CAPTCHA_TYPE1_PATTERN, self.html) chall2 = re.search(self.CAPTCHA_TYPE2_PATTERN, self.html) if chall or chall2: self.invalidCaptcha() else: self.correctCaptcha() break finalUrl = re.search(self.FILE_LINK_PATTERN, self.html) if not finalUrl: self.fail("Couldn't find free download link") self.logDebug("got download url %s" % finalUrl.group(1)) self.download(finalUrl.group(1))