File scraping mit mechanize
Verfasst: Samstag 23. August 2014, 00:39
Aktuell habe ich ein kleines Projekt, wofür ich leider seit neuerem mich mit Solve Media rumschlagen muss um weiterhin die gewohnten Operationen durchzuführen.
Soweit so gut, immerhin kein js-only Captcha Gedöns, womit ich in Python kaum eine Chance hätte.
Nichts desto trotz habe ich aktuell ein Problem, und zwar erkennt es das Captcha nicht richtig bzw. erhalte ich ein falsches(Löse es per Hand, nach 50 Versuchen sollte man davon ausgehen das captcha richtig zu haben)
Desweiteren war ich mir rein theoretisch sicher das richtige Captcha ausgelesen zu haben, da ich den ausgelesenen Link zum Captcha nur ein einziges Mal aufrufen kann, danach werde ich weitergeleitet auf eine Error Seite.
browser settings:
function(hässlicher code, durch herumexperimentieren entstanden, sollte erst einmal funktionieren bevor ich ihn wieder "zurechtbiege"):
Ich parse die daten richtig laut den mit Tamper Data abgefangenen Beispieldaten, aber ich bekomme immer noch die Fehlermeldung, dass das Captcha falsch ist(handgelöst, sind relativ einfache Captchas, vermute nicht, dass ich das 20x selber falsch mache).
Irgendjemand eine Idee, warum das Captcha falsch ist, wo ich etwas vergesse oder was weiß ich-.-
Ich verzweifel seit 2-3 Tagen daran und habe keinen Ansatz mehr, was ich falsch machen könnte.
MfG Mampf
Soweit so gut, immerhin kein js-only Captcha Gedöns, womit ich in Python kaum eine Chance hätte.
Nichts desto trotz habe ich aktuell ein Problem, und zwar erkennt es das Captcha nicht richtig bzw. erhalte ich ein falsches(Löse es per Hand, nach 50 Versuchen sollte man davon ausgehen das captcha richtig zu haben)
Desweiteren war ich mir rein theoretisch sicher das richtige Captcha ausgelesen zu haben, da ich den ausgelesenen Link zum Captcha nur ein einziges Mal aufrufen kann, danach werde ich weitergeleitet auf eine Error Seite.
browser settings:
Code: Alles auswählen
def _build_session(self):
"""
typical mechanize browser settings,
using shared proxy vom proxy module
"""
cj = cookielib.LWPCookieJar()
used_proxy = self._proxy.get_shared_proxy()
self._logger.debug("used proxy: %s" % used_proxy)
self._browser = mechanize.Browser()
self._browser.addheaders = [('User-agent', self._get_random_useragent())]
self._browser.set_cookiejar(cj)
self._browser.set_proxies({"http": used_proxy})
self._browser.set_handle_equiv(True)
self._browser.set_handle_redirect(True)
self._browser.set_handle_referer(True)
self._browser.set_handle_robots(False)
self._browser.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)Code: Alles auswählen
# python has no javascript, so we need the noscript challenge
p = re.compile('src="(http://api.solvemedia.com/papi/challenge.noscript[^\s]+)"')
captcha_url = p.findall(response.read())[0]
html_content = self._browser.open_novisit(captcha_url).read()
if 'client error 117B' in html_content:
# solve media checks for same IP/user agent in following 30 seconds
self._proxy.trash_shared_proxy()
self._build_session()
return self.register()
# looking for captcha img src
pattern = re.compile('<img src="(/papi/media\?c=[^\s]+)"')
captcha_urls = pattern.findall(html_content)
if captcha_urls:
# open_novisit to prevent deleting/refreshing of captcha
captcha_url = captcha_urls[0]
captcha = self._browser.open_novisit('http://api.solvemedia.com' + captcha_url).read()
self._logger.debug('http://api.solvemedia.com' + captcha_url)
open('captcha.gif', 'wb').write(captcha)
cw = CaptchaWindow()
if self.ocr_captcha:
cs = captchaOCR.CaptchaSolver()
cs.load_captcha('captcha')
cs.smoothe_captcha()
cs.resize_captcha()
cs.convert_captcha_BMP()
text, confidence = cs.solve_captcha()
cs.clean()
cw.solved_captcha = text
else:
cw.display_captcha('captcha.gif')Irgendjemand eine Idee, warum das Captcha falsch ist, wo ich etwas vergesse oder was weiß ich-.-
Ich verzweifel seit 2-3 Tagen daran und habe keinen Ansatz mehr, was ich falsch machen könnte.
MfG Mampf