Autor Zpráva
Suta
Profil
Stránky www.prvnioddil.cz jedou v ostrém provozu již půl roku. Občas se stalo, že do fora sem tam přišel příspěvek od nějakého robota - vyplnil si e-mail, jméno, text i s vlastními odkazy... To jsem v počtu tří či pěti příspěvků bez problému jednou za 14 dnů vymazal...

Včera večer jsem však našel 900 příspěvků vyslaných během dvou hodin, každou minutu několik. Navíc - což se dříve nestávalo vůbec - navýšilo se počítadlo a nehorázné číslo. Zřejmě tedy přistupuje z veřejných IP..? Přes noc jsem vymazal všechny soubory, které s roboty mohly spolupracovat. Ráno jsem je přehrál zpět, a během dvou minut byli roboti zpět a opět spamují... (mrkněte na odkaz - pravý sloupec - odstaveček "Nově ve foru")

Co s tím?

1. Jak vyřešit forum - odesílání formuláře? Obrázkem a přepsáním textu? Jde to jednodušeji? (každý vložený příspěvek má jiný e-mail i jiné jméno odesílatele i jiný text...)

2. Jak vyřešit počítadlo přístupů?

Díky za pomoc.

(pozn.: nefunguje-li forum, znamená to, že je dočasně odstaveno)
nightfish
Profil
ad 1) http://suplik.petnik.cz/funkcni-javascriptova-bariera-na-komentarovy-s pam-qxxq628.html
Nox_lbc
Profil
1) Na Intervalu již několik let funguje systém se dvěma odesílacíma tlačítkama, první je "Ukázat náhled" a druhé "Odeslat" ... a prý ani jeden spam ... ale ta JS bariéra je taky vymakaná ;-)

2) nějakou free službu (toplist, navrcholu, blueboard), free PHP skript (hotscripts.com) nebo si napsat funkci sám (ale to by ses jinak asi neptal ;-)
Suta
Profil
Problém vyřešen. Jelikož nemám mnoho času, udělal jsem to nejjednodušším způsobem: forum jsem měl udělané tak, při kliknutí na vybrané forum se zaregistruje session daného fora a při vkládání tématu či příspěvku se do databáze zapíše název fora, k němuž dané téma či příspěvek k tématu patří... Toho jsem tedy využil - na začátek souboru, v němž je formulář jsem dal podmínku: je-li proměnná 'forum' prázdná, vypadni :) Takto jsem vyřešil oba dva problémy, spamování fora i počítadlo přístupů; bylo krásné sledovat, jak po přehrání souboru s touto podmínkou roboti odlézali jeden po druhém pryč... (a těším se, do jakého souboru vlezou příště :)

nightfish
Díky, pěkný způsob.

Nox_lbc
Forum mám naprogramované od piky své, přesto jsem však potřeboval poradit.


Již mimo hlavní téma: existují nějaké způsoby, jak zjistit, zda se na stránky dostal robot, či zda se jedná o skutečného uživatele? Např. v IP apod. ?
Honza Hučín
Profil
Suta
IMHO se to dá poznat podle toho, zda klient, který si vyžádal stránku, umí javascript.
Podle IP těžko, protože by se to už dávno využívalo, nehledě k tomu, že některé špatně zabezpečené počítače mohou fungovat jako roboti, aniž by o tom jejich majitel věděl.
Suta
Profil
Forum ošetřeno, roboti však stále chodí a jsou nějací jiní než dřív, jelikož navyšují počítadlo... Jak počítadlo přístupů tak online počítadlo (kdo je právě zde). Mám to přes IP adresy, jakmile někdo navštíví stránky, zapíšu si jeho IP... Tito roboti mají své IP... Při každém přístupu jinou...

Poradí někdo?
djlj
Profil
Poradí někdo?
S čím?
Proti tomu nic nenaděláš..
Dmagician
Profil
Robotov sa nezbavis. Rozlisit ci je to realny uzivatel alebo robot budes musiet bud ze zapocitas +1 az po prihlaseni sa, alebo iba ak prichadza na web cez uvodnu stranku.. inak si neviem predstavit ako sa tomu vyhnut.

sice... este by si mohol spravit to, ze ak pride k odoslaniu formulara ktory sa nevykona (pretoze nie je vyplnena premenna "forum") tak odpocitas na pocitadle -1. Len aby ti to casom neslo do minusu ;-))

Mimochodom pocitadlo je dost kravina.. statistiky su smerodatnejsie.
Suta
Profil
Dmagician
alebo iba ak prichadza na web cez uvodnu stranku..
- jak to myslíš?

Existuje způsob, jak roboty ze stránek odstřihnou? Třeba přejmenováním souboru.. ?
Dmagician
Profil
proste ak pride na uvodnu stranku a nevola priamo (trebars) odosielaci formular na prispevok
Suta
Profil
Teď jsem si všimul jedné věci - při návštěvě stránky a přičtení počítadla vždy zapisuji také adresu stránky, z níž uživatel přišel a adresu stránky, z níž se počídlo volá (počítadlo vkládám do všech stránek). A ejhle, roboti stále chodí do jednoho jediného souboru - prvnioddil.cz/forum.php?zobrazit=vlozit_nove_tema ...

Zkusím zakázat přičtení počítadla z této stránky a mělo by to fungovat, prozatím... Pokud nezačnou navštěvovat stránky jiné...

Neví někdo, zda roboti procházejí celé stránky či zda si vždy vyberou jeden soubor který se jim líbí? Proč si před dvěma dny vybrali zrovna soubor s formulářem... ? Mám správnou filozofii, když řeknu, že našli soubor, díky němuž mohou posílat spamy (což taky udělali a to v hojné míře :) ) a tak se jim v něm zalíbilo že jej navštěvují již třetí den.. a do jiných souborů (v nichž zřejmě při procházení celých stránek před několika dny nic čím by mohli škodit nenašli) nechodí (a již chodit nebudou?) ?
Suta
Profil
Prosím, neví někdo, jak fungují roboti? Je tedy možné, že každý úplně jinak... ale přece:

- Je pravdou, že procházejí stránky, najdou si pouze ty, kde by mohli něco provádět (stránky s formulářem), tam zůstanou a ostatní stránky opustí a již na ně nechodí? Nebo to tak není?
MichálekII
Profil *
bych si tipnul že budou roboti dvou druhů, nebo že budou pracovat ve dvou režimech atp.

1) procedura která vyhledává vhodné stránky pro spamování (prochází postupně všechny stránky) - malá frekvence návštěv
2) a procedura která spamuje (navštěvje pouze stránky s formuláři atd.) velká frekvence návštěv
djlj
Profil
Suta
Zeptej se někoho, kdo ty roboty programuje - ten to asi bude vědět nejlíp ;).
Suta
Profil
MichálekII
Díky.
Honza Hučín
Profil
Pokud jde o radu, jak fungují roboti, dovolím si odkázat na hojné komentáře k článku, který je výše zmíněný (tady je i přímý odkaz). Takoví rony nebo Dero by mohli vědět docela hodně...
krteczek
Profil
Suta: vyzkoušej tohle: http://www.jaknato.com/index.php?clanek=php-ochrana-formularu-pred-spa mem
je to jednoduché a účinné ;-)
krteczek
Honza Hučín
Profil
A ještě k tomu počitadlu - pokud nechceš započítávat roboty, vypisuj ho javascriptem. Neboli máš-li u něho větev <noscript>, zruš ji. Těch pár skutečných uživtelů bez JS sice nezapočítáš, ale bude to velmi malá chyba, rozhodně mnohem menší, než jaká je teď při zpočtení robotů.
Honza Hučín
Profil
krteczek

je to jednoduché a účinné
Promiň, účinné asi jo, ale jednoduché ani náhodou. Proč si to myslím?

1. Je nutné používat session. Co když na webu session nemám, nechci mít, neumím to? Co v případě, když uživatel odešle formulář po delším čase, než je timeout session?

2. Uživatel musí udělat něco navíc, v tomto případě vyplnit číslici, to snižuje komfort.
krteczek
Profil
Honza Hučín:
a) Pro někoho kdo programuje na urovni Suty, sem přesvědčen že to je jednoduche, script je okomentovany.
SESSION je jen jiný (lepší) způsob COOKIE, pokud je čas odeslání delší než doba platnosti session zobrazí se vyplněný formulář (já vždycky vracím vyplněný form, kromě přihlašovacího) a hláška že vyplnil špatně konkrétní položku formuláře. A naopak: co když někdo nechce javascript? ;-)

b) to je pravda, vždycky je něco za něco, napsat číslo od 1 do 9 sníží sice komfort, ale pokud se někdo rozhodne že bude reagovat v diskuzi, uděláto i s vyplněním toho čísla. Nemyslím si, že by to až tak moc vadilo lidem. a když tak jistě míň než spousta spamu v diskuzi samotné.

krteczek
Suta
Profil
krteczek
Vždycky mě fascinovaly tvé hojně (až přehršel :) okomentované scripty... Ne, ono je to vážně potřeba a je to tak dobře, myslím to v pozitivním slova smyslu. K tématu...

Asi musím souhlasit s Honzou, že to jednoduché není (tedy pro mě ano, ale pro běžné programátory, kteří by chtěli roboty oddělat). Text oproti obrázku je asi taky plus (pokud to nespojíš a nemá-li uživatel povoleny obrázky přidáš textovou možnost). Session je taky ok, takže zbývá asi opravdu jen to "obtěžování" uživatele s vyplněním dalšího pole. Pro někoho maličkost, pro jiné otrava... Ale je to řešení.


K OCHRANĚ FORA PROTI ROBOTŮM
Jak už jsem psal výše, nakonec jsem zvolil pro mě nejjednodušší (nejrychlejší, nemám více času) způsob a myslím, že můžu doporučit i ostatním:

1. Uživatel přijde do fora, kde si vybírá určité forum (nebo se do něj zkrátka musí dostat přes nějaký odkaz)
2. V cestě odkazu pošlu proměnnou s názvem vybraného fora (nebo jakoukoliv jinou, zkrátka potvrzení že se jedná o uživatele)
3. Poté již v souboru s formulářem pouze zkontroluji, zda existuje proměnná vybraného fora (nebo již zmíněná jakákoliv jiná kontrolovací proměnná) a pokud ne, robota!! vykopnu pomocí exit(); existuje-li proměnná, jedná se o uživatele a je vše ok.

Hm?

K POČÍTADLU
Honza Hučín
Na naučení se javascriptu jsem si nikdy nenašel čas, používám jej (většinou kopírováním) pouze na to, co jsem potřeboval. Nicméně se mi tvé řešení zdá velmi dobré, je pravda, že 1. se přes ně robot nedostane a 2. uživalů bez javascriptu je minimum.
Dmagician
Profil
Suta
K OCHRANĚ FORA PROTI ROBOTŮM
Jak už jsem psal výše, nakonec jsem zvolil pro mě nejjednodušší (nejrychlejší, nemám více času) způsob a myslím, že můžu doporučit i ostatním:

1. Uživatel přijde do fora, kde si vybírá určité forum (nebo se do něj zkrátka musí dostat přes nějaký odkaz)
2. V cestě odkazu pošlu proměnnou s názvem vybraného fora (nebo jakoukoliv jinou, zkrátka potvrzení že se jedná o uživatele)
3. Poté již v souboru s formulářem pouze zkontroluji, zda existuje proměnná vybraného fora (nebo již zmíněná jakákoliv jiná kontrolovací proměnná) a pokud ne, robota!! vykopnu pomocí exit(); existuje-li proměnná, jedná se o uživatele a je vše ok.

Hm?


Je to dobry napad. Robim to podobne. Na strane servera. Poslem ti to na majl, pretoze si myslim ze najlepsia ochrana je taka, ktora nie je vidiet. Proste navonok sa vsetko sprava rovnako ale riesim to na "pozadi". Aj ked neviem ci to technicky bude mozne u teba, zalezi na tom ci pouzivas session.
Suta
Profil
Dmagician
Díky, dobrý způsob, zřejmě by mě nenapadl. Zkrátka je založen na faktu... (cenzura) :)

Díky.
Dmagician
Profil
Az na to ze som pisal ze nechcem rozpravat ako to funguje, pretoze najlepsia ochrana je taka ktora zvonka nie je vidiet a takisto nie je nikde propagovana. Tym som myslel ze si ten koncept mas nechat pre seba ;-) Nuz.. co uz s tebou... ;-)
Fobius
Profil *
Návod uvedený na této adrese:
http://www.jaknato.com/index.php?clanek=php-ochrana-formularu-pred-spa
je funkční, ALE ! pokud když má uživatel vypnutý javascript a není to robot, pak se mu taky javascriptem nezkontroluje na stránce zda vyplnil e-mail se zavináčem a zda text není prázdný.

To by mohlo sice následně zkontrolovat PHP, ale aby uživatel nemusel text psát znovu musely by se příspěvek ukládat do mezipaměti.

Nebyl by nějaký chytřejší způsob jak to pořešit? budu rád za Vaši radu přímo na fobius(zavinacek)centrum(tecka)cz
Toto téma je uzamčeno. Odpověď nelze zaslat.