Do "rozwiązania" captcha można użyć płatnych API specjalnych serwisów które odczytają captcha przy użyciu ludzkiej pracy ale nie o tym będzie mowa w artykule. Będziemy korzystali z dostępnych narzędzi i kilku linijek kodu.
Załóżmy, że znamy jakiś język programowania np. Pythona (a jak nie to można się go szybko nauczyć) i lubimy eksperymentować, testować itp. Co tak na prawdę potrzebujemy aby w najkrótszy sposób zbudować rozwiazanie odczytujące captcha ?
1) Program typu OCR działającego z lini komend - nie jest opłacalne czasowo pisanie od podstaw programu do rozpoznawania tekstu z obrazków. Istnieją rozwiązania komercyjne i Open Source gdzie na prawdę mądrzy ludzie znający nie tylko programowanie ale także bardzo dobrze matematykę i różne skomplikowane algorytmy i teorie od lat próbują dojść jak najlepiej odczytywać tekst z obrazków. Logiczne jest, że nie mamy ochoty poświęcać tyle czasu swojego życia aby napisać własny OCR tylko po to aby rozwiązywał kody obrazkowe na stronach. Może się okazać nawet, że zanim napiszemy taki program miną lata i rozwiązanie captcha będzie już tak przestarzałe, że nikt nie będzie go używał. Dlatego przy projekcie programu wykorzystującego OCR najrozsądniej jest użyć komercyjnego SDK (np. firmy Abby) lub użyć rozwiązania Open Source z których najlepszym mi znanym jest Tesseract zapoczątkowany przez firmę HP a teraz rozwijany po części przez Google (podobno wykorzystywany przy skanowaniu książek). Został użytu między innymi w oprogramowaniu Scrapeboard jednak ze słabym skutkiem, ponieważ nie został wytrenowany dla poszczególnych typów captcha. Inne znane rozwiązania wykorzystujące Tesseracta to Captcha Killer oraz Anti-Recaptcha .
2) Program do obróbki obrazu działający z linii komend - programy OCR potrafią tak na prawdę z sensowną skutecznością odczytywać jedynie czarne litery na białym czystym tle lub białe litery na czarnym tle. Stąd też koniecznością jest obróbka obrazka, usunięcie tła itp. aby finalnie został nam sam napis na białym tle. Można tutaj trochę poprogramować używając różnych bibliotek np. PIL dla Pythona i zawrzeć w naszym programie kod który przerabia obrazki ale nie jest to już podejście "na szybko" dlatego aby oszczędzić czasu wykorzystamy bardzo znane rozwiązanie jakim jest ImageMagick.
3) Python - oczywiście aby powyższe programy złączyć w sensowną całość potrzebujemy jakiegoś języka programowania. W tym przypadku użyjemy Pythona, bo się po prostu do tego idealnie nadaje. Owa całość nie potrzebuje interfejsu ale ułatwi testowanie. Napiszemy po prostu krótkie funkcje które wywołąją na raz wiele różnych poleceń linii komend. Wpisywanie ich samemu do celów testowych nie ma sensu dlatego ułatwimy sobie sprawę Pythonem.
Jako przykład będziemy omawiać captcha skryptu PHPLD czyli bardzo popularnego "na zachodzie" (i dawno temu w darmowej wersji także w Polsce) katalogu stron. Może nie podam tutaj w 100% gotowego rozwiązania ale postaram się choć trochę ułatwić osobom które poszukują takiej wiedzy. Mimo że podobne teksty widziałem już na stronach anglojezycznych jest kilka spraw których nie znajdzie się na żadnym innym forum czy blogu a które tutaj podpowiem, więc zapraszam do dalszej lektury. Niedługo pojawią się następne części tego artykułu.
c.d.n.
Powered by PyroCMS
Comments
There are no comments