Na záver trilógie si povieme niečo o trochu odlišnom probléme pri strojovom prístupe k web stránkam, ktorý dosť súvisí s ťahaním databáz: ako obabrať písmenkovo/obrázkové captcha.
Článok je nevoľným pokračovaním prvého a druhého fragmentu, preto je vhodné si ich najprv prečítať.
----------
2.3 Captcha ----
Prevádzkovateľ ZvieratkoDB, ktorý naozaj veľmi nechce, aby sme si databázu stiahli "strojovo", zabezpečí prístup ku show.cgi pomocou tzv. captcha obrázkov. Tieto nielenže znepríjemňujú život obyčajným smrteľníkom (najmä tým s horším zrakom), znemožňujú celý pobyt na stránke používateľom textových terminálov (aj keď už som videl aj ASCIIart captcha, čo ma veľmi potešilo), ale ak sú dobre vymyslené, aj zabraňujú "strojovému" ťahaniu. Vytrvalého ťahača ale ani captcha neodradí, môže totiž skúsiť:
Plaintextová hodnota v Cookie alebo v skrytej premennej vo formulári je lahôdkou pre grep|sed:
<INPUT type="hidden" name="porovnaj_s" value="k682k4sfds">
<IMG src="captcha/k682k4sfds.gif">
Takto testujeme, ci nie si slepy:
<INPUT type="text" name="user_zadal" value="" size="10">
<INPUT type="hidden" name="captchaid" value="98745">
wget -O - "http://zvieratko.db/show.cgi?id=$i&captchaid=98745&user_zadal=k682k4sfdd"
Nie vždy je nutné captcha naozaj riešiť. Niekde môže byť použité ako prevencia príliš častého ťahania, t.j. nie je vyžadované pri každom show.cgi, ale až po prekročení limitu (na umožnenie neobmedzeného prezerania ľuďmi). V takých prípadoch, ak captcha nemáme možnosť strojovo vyriešiť/obísť, ho skrátka ignorujeme a rešpektujeme limit. Ťahanie pokračujeme z inej IP (viď. časť 2.2 Limit na IP).
2.4 Ďalšie obmedzenia ----
Prípadné ďalšie obmedzenia môžu síce prispieť ku vyššej ochrane pred stiahnutím databázy "ťahačmi", výrazne však znižujú možnosti prístupu ku stránke rôznym alternatívnym web browserom, proxy cache serverom, zafirewallovaným systémom s anonymizérmi atď. Napriek "dobrému úmyslu" to môže dopadnúť tak, že web stránka by bola prístupná iba ľuďom s WinXP/Vista s plne opatchovaným IE7, so zapnutými obrázkami, bez proxy servera a firewallu po ceste.
Jedná sa o obmedzenia ako napríklad:
--referer, --user-agent, --load-cookies), a vytrvalý ťahač bude na tom nakoniec stále lepšie, ako nevinný smrteľník, ktorému tá stránka napr. v Opere ani za svet nepôjde.
3. Iné vychytávky ----
Nechceme sa tváriť pri ťahaní ZvieratkoDB príliš nápadne. Ak vieme vyčerpať denný limit za pol hodinu, nebudeme tú pol hodinu spamovať cieľ -- mohlo by to viesť ku zahlteniu (a spomaleniu) servera, alebo sa výrazne prejaviť na grafoch prevádzky, čo by si mohol niekto "zodpovedný" všimnúť. Pridáme sem-tam nejaký ten sleep pred wget, prípadne na ťahanie použijeme business hours, nech sa "stratíme" medzi bežným trafficom.
Taktiež nemusíme ťahať záznamy porade, ale môžeme sa tváriť náhodne. Na tento účel môžeme "idlist.txt" prehnať cez rl, alebo využiť primitívne čísla modulo P (P prvočíslo, P>L).
Ťahači, ktorí to myslia vážne, si do bash skriptu dorobia veci ako ukladanie stavu pri signále (napr. trap ulozstav INT HUP), multifunkciu proxy/zmenaIP, a čokoľvek ďalšie, čo ich napadne.
4. Záver ----
Stiahnutú databázu buď ponecháme v univerzálnom formáte .txt, alebo podstrčíme mladšiemu súrodencovi na nakódenie frontendu pre sql kvôli priamym aj reverzným lookupom. V prípade ZvieratkoDB nezabudnúť na recode windows1250..iso8859-2.
Žiadna verejne prístupná DB nie je strojovo nestiahnuteľná. Niekedy sa to dá poriadne skomplikovať, ak sa to však preženie, ani bežný smrteľník sa k tomu potom nedostane. Použitím "rozumného" IP limitu vie prevádzkovateľ DB síce odradiť slabších ťahačov, ale zároveň zrušiť väčšie siete používajúce proxy (spomeňme napríklad bratislavský roburnet alebo ynet, a väčšina firemných sietí).
Napríklad taká ZvieratkoDB je stiahnuteľná za 54k IPdní (napriek tomu, že má captcha "ochranu"), čo je iba mesiac z biednych 1800 verejných IP ;) Použitím dobre implementovaného captcha vie prevádzkovateľ odradiť aj tých hustejších ťahačov. Vytrvalý a odhodlaný ťahač s dostatočným počtom Číňanov ale stiahne všetko :)
No a keď databáza nie je verejne prístupná, ostávajú už len metódy, ktoré sa vo všeobecnosti môžu nazývať ("hackerskými") prienikmi.
----------
#1: Úvod, Disclaimer, Ilustračná DB, 1. Jednoduchý prípad, 1.1 Ide to pomaly..., 1.2 Ošetrovanie chýb
#2: 2. Obmedzenia, 2.1 Náhodné id, 2.2 Limit na IP, Ako získať veľa IP
#3: 2.3 Captcha, 2.4 Ďalšie obmedzenia, 3. Iné vychytávky, 4. Záver
|
webhosting by: |
UnlimitedHosting | CustomHosting | FreeWeb.sk |
Comments
Re: Ako stiahnuť databázu - #3/3: Captcha
Napr www.gme.cz pouziva obrazkovou kontrolu pro pristup k kalatlogovym listum a dokumentacim a ochrana(spis buzerace klientu):
<img src='base/global/grkod/gfx.php?precode=288366' border='1' alt='Obrázek je nutno zobrazit pro dokončení instalace. Opište grafický kód na něm uvedený.'>
Hadejte jake cislo je na obrazku ;-)
Linux akbar!