Jde to velice snadno.
Už jsem si nějakou dobu pohrával s možností vytvořit nějakýho robůtka, který by se brouzdal sítí a dělal co je potřeba. Tu sbíral emailové adresy, tu postoval spamy do formulářů, či později se pokoušel odhadovat hesla.
Až mi to dneska nedalo, sedl jsem k tomu a naprogramoval na cca 400 řádků hodně základní verzi takového robota, který se hlavně umí pohybovat ze stránky na stránku, když mu zadáme nějakou url. Má to samozřejmě mouchy, hlavně jsem neřešil sofistikované procházení mezi stránky jednoho serveru, když se našel nějaký odkaz na cizí server, vždy nejraději skočí tam.
Co je tedy potřeba k tomu, si takovýto robot naprogramovat? Rozhodně zde nebudu dávat kód, jelikož už tak je spamu kolem hodně a docela se bojím jeho zneužití. Berme to čistě jako výukový nástroj…
Otevírání webů a parsování odkazů je věc náročná a tak zabere hodně času a také paměti. Proto určitě třeba ani PHP není vhodný jazyk, ale nevadí. I tam se to dá udělat.
Jako základ jsem použil CURL, který je do začátku primitivní a dá se později moje základní třída rozšířit i na to známé posílání hodnot přes post. Curlem si tedy otevřeme první zadanou stránku a zjistíme její obsah.
Pak ji protřeme jedním regulárním výrazem, který zjistí veškeré href="" atributy. Je potřeba provést určitou korekci takto zjištěných věcí, například co jsou emaily, co jsou relativní adresy, co jsou skoky na jiný server apod.
Jakmile máme jakousi databázi odkazů, které se na dané stránce vyskytují, už je to jednoduché. Osobně jsem jenom otevřel první (pokud sme již zde nebyli) adresu směřující na cizí server. Pokud zde nebyla nalezena platná adresa, šli jsme na nějakou v lokálním serveru s nadějí, že nějakou objevíme. Pokud se to stále nedaří, vrátíme se o krok zpět ze slepé uličky a jdeme na další cizí web.
Ano, teoreticky se můžeme dostat do stavu, kdy budeme ve slepé pořád, proto by bylo asi výhodné volit jako první web takový, na kterém se vyskytuje velké množství odkazů na cizí weby, pak se nám nemůže stát, že budeme slepě končit.
Princip je tedy hotov, nic jiného v tom není. Velkou část kódu ovšem zabere režie výběrů adresy, na kterou se půjde, když budeme uvažovat i ony slepé místa.
Jakmile si naprogramujete takové jádro, schopné pohybovat se nezávisle sítí, je už jen třesnička na dortu, přidat tomu nějakou funkčnost. A nikdo neříká, že to musí být jen spamovací robot, dá se to využít i úplně jinak, jako první mě napadla určitá statistika webů, můžeme statisticky sledovat v podstatě cokoliv.
Ještě drobné upozornění – timelimit skriptu si musíte změnit, za cca defaultních 30 sekund se toho moc nestihne. A jelikož odkazů přibývá, historie navštívených stránek roste, paměť zabraná php je větší a větší, dostáváme se vlastně na celkovou nepoužitelnost skriptu. I když napadá mě několik metod, jak to trochu zoptimalizovat. Jednak inteligentní cache a jednak postupným reloadováním stránky.
Pokud najdu zase nějakou motivaci, třeba robůtka vylepším k aspo





nahoru