Cum să ţii boţii departe de site
Acesta este un articol un pic mai tehnic decât cele cu care sunteţi obişnuiţi şi este scris la cererea lui Xtall. În acest articol încerc să explic cum să ţii tot felul de roboţi (programe automate ce fac tot felul de chestii, în general rele) departe de site-uri şi nu, nu e ştiinţa rachetelor.
În primul rând dacă sunteţi interesaţi de trafic (nu contează de unde, nu contează cum), metoda aceasta este un pic cam rea, pentru că va tăia accesul multor potenţiali vizitatori (roboţi). Estimez, prin aplicarea configuraţiei pe care o folosesc eu, o scădere a traficului cu până la 5%.
Am ales să blochez boţii (roboţii) direct din fişierul .htaccess. Acest fişier permite atât configurarea fină cât şi brută a funcţionării site-ului. Înainte să vă apucaţi de treabă este bine să ţineţi cont de următoarele aspecte:
- Downloadaţi fişierul .htaccess original şi salvaţi-l undeva bine. Sunt lucruri care dacă pot să meargă prost vor merge prost. Dacă vă dă eroarea 500 înseamnă că ceva a mers prost.
- Documentaţi-vă ce înseamnă .htaccess, ce structură şi ce conţinut are. Am mai scris un pic şi aici.
- Modificările le faceţi incremental (adică numai una câte una, salvaţi şi apoi verificaţi să nu dea eroare).
Acestea fiind zise, să trecem direct la partea cu boţii, care este de interes în acest articol. Pentru asta eu folosesc următoarea structură:
SetEnvIfNoCase – este sintaxă specifică .htaccess care atribuie o valoare în cazul în care o anume condiţie este îndeplinită.
User-Agent – condiţia. User-Agent-ul este un program prin intermediul căreia se accesează site-ul şi oricare dintre paginile acestuia.
bad_bot – o denumire de variabilă care ne ajută să punem condiţii astfel încât ceea ce vrem să se întâmple să fie definit. Veţi vedea un pic mai jos.
Să luăm două exemple:
- SetEnvIfNoCase User-Agent ^$ bad_bot
Această linie de comandă spune că dacă User-Agent-ul este gol atunci acesta să fie marcat ca şi robot rău. Nu este politicos să-mi ceri ceva dacă nu te prezinţi.- SetEnvIfNoCase User-Agent "larbin" bad_bot
Această linie de comandă spune că dacă User-Agent-ul este "larbin" atunci acesta să fie marcat ca şi robot rău. Vom vedea ce păţesc roboţii răi. Larbin este unul dintre cele mai rele lucruri care bântuie pe internet şi, credeţi-mă, nu-l vreţi în vizită.
No bun, avem doi roboţei care cred că pot să-şi facă de cap pe tarlaua noastră. Aşa că le dăm cu biciul peste bot şi-i invităm nepoliticos afară. Iată cum. Avem definită chestia aia cu bad_bot (adică dacă se întâmplă ca vizitatorul să fie unul dintre cei definiţi) pe care o folosim aşa:
<Limit GET POST>
order allow,deny
allow from all
Deny from env=bad_bot
</Limit>
Adică spunem serverului să limiteze cererile de acces (folosind metodele PUT [trimite ceva spre noi] respectiv GET [cerere de conţinut/ pagină]) pentru toţi cei definiţi ca fiind bad_bot. Asta înseamnă că restul nu vor fi afectaţi, ci doar cei definiţi explicit ca fiind răi. Ca atare iată lista de boţi care are accesul interzis pe acest site. Unele comenzi s-ar putea să fie identice (denumirile roboţilor). Mi-a fost lene să le tot modific şi să le corectez.
SetEnvIfNoCase User-Agent ^$ bad_bot
SetEnvIfNoCase User-Agent "^AESOP_com_SpiderMan" bad_bot
SetEnvIfNoCase User-Agent "^Alexibot" bad_bot
SetEnvIfNoCase User-Agent "Anonymouse.org" bad_bot
SetEnvIfNoCase User-Agent "^asterias" bad_bot
SetEnvIfNoCase User-Agent "^attach" bad_bot
SetEnvIfNoCase User-Agent "^BackDoorBot" bad_bot
SetEnvIfNoCase User-Agent "^BackDoorBot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^BackWeb" bad_bot
SetEnvIfNoCase User-Agent "^Black Hole" bad_bot
SetEnvIfNoCase User-Agent "^BlowFish/1.0" bad_bot
SetEnvIfNoCase User-Agent "^BotALot" bad_bot
SetEnvIfNoCase User-Agent "^Bullseye/1.0" bad_bot
SetEnvIfNoCase User-Agent "^Mozilla/4.0 (compatible; BullsEye; Windows 95)" bad_bot
SetEnvIfNoCase User-Agent "^BunnySlippers" bad_bot
SetEnvIfNoCase User-Agent "^BuiltBotTough" bad_bot
SetEnvIfNoCase User-Agent "^Cegbfeieh" bad_bot
SetEnvIfNoCase User-Agent "^CheeseBot" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker" bad_bot
SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot
SetEnvIfNoCase User-Agent "^CherryPicker /1.0" bad_bot
SetEnvIfNoCase User-Agent "^CopyRightCheck" bad_bot
SetEnvIfNoCase User-Agent "^cosmos" bad_bot
SetEnvIfNoCase User-Agent "^Crescent" bad_bot
SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot
SetEnvIfNoCase User-Agent "^DittoSpyder" bad_bot
SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
SetEnvIfNoCase User-Agent "^EroCrawler" bad_bot
SetEnvIfNoCase User-Agent "^ExtractorPro" bad_bot
SetEnvIfNoCase User-Agent "^Foobot" bad_bot
SetEnvIfNoCase User-Agent "^Harvest/1.5" bad_bot
SetEnvIfNoCase User-Agent "^hloader" bad_bot
SetEnvIfNoCase User-Agent "^HTML" bad_bot
SetEnvIfNoCase User-Agent "^httplib" bad_bot
SetEnvIfNoCase User-Agent "^humanlinks" bad_bot
SetEnvIfNoCase User-Agent "^InfoNaviRobot" bad_bot
SetEnvIfNoCase User-Agent "Java" bad_bot
SetEnvIfNoCase User-Agent "^JennyBot" bad_bot
SetEnvIfNoCase User-Agent "^Kenjin Spider" bad_bot
SetEnvIfNoCase User-Agent "^Keyword Density/0.9" bad_bot
SetEnvIfNoCase User-Agent "larbin" bad_bot
SetEnvIfNoCase User-Agent "^LexiBot" bad_bot
SetEnvIfNoCase User-Agent "^libWeb/clsHTTP" bad_bot
SetEnvIfNoCase User-Agent "libwww" bad_bot
SetEnvIfNoCase User-Agent "^LinkextractorPro" bad_bot
SetEnvIfNoCase User-Agent "^LinkScan/8.1a Unix" bad_bot
SetEnvIfNoCase User-Agent "^LinkWalker" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial/1.34" bad_bot
SetEnvIfNoCase User-Agent "^lwp-trivial" bad_bot
SetEnvIfNoCase User-Agent "^Mata Hari" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control – 5.01.4511" bad_bot
SetEnvIfNoCase User-Agent "^Microsoft URL Control – 6.00.8169" bad_bot
SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot
SetEnvIfNoCase User-Agent "^moget" bad_bot
SetEnvIfNoCase User-Agent "^moget/2.1" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc" bad_bot
SetEnvIfNoCase User-Agent "^MIIxpc/4.2" bad_bot
SetEnvIfNoCase User-Agent "^NetAnts" bad_bot
SetEnvIfNoCase User-Agent "^NetMechanic" bad_bot
SetEnvIfNoCase User-Agent "^NICErsPRO" bad_bot
SetEnvIfNoCase User-Agent "^Offline Explorer" bad_bot
SetEnvIfNoCase User-Agent "^Openfind data gathere" bad_bot
SetEnvIfNoCase User-Agent "^Openfind" bad_bot
SetEnvIfNoCase User-Agent "PHP" bad_bot
SetEnvIfNoCase User-Agent "^ProPowerBot/2.14" bad_bot
SetEnvIfNoCase User-Agent "^ProWebWalker" bad_bot
SetEnvIfNoCase User-Agent "^QueryN Metasearch" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey Bait & Tackle/v1.01" bad_bot
SetEnvIfNoCase User-Agent "^RepoMonkey" bad_bot
SetEnvIfNoCase User-Agent "^RMA" bad_bot
SetEnvIfNoCase User-Agent "^SiteSnagger" bad_bot
SetEnvIfNoCase User-Agent "^SpankBot" bad_bot
SetEnvIfNoCase User-Agent "^spanner" bad_bot
SetEnvIfNoCase User-Agent "Spider" bad_bot
SetEnvIfNoCase User-Agent "^suzuran" bad_bot
SetEnvIfNoCase User-Agent "^Szukacz/1.4" bad_bot
SetEnvIfNoCase User-Agent "^Teleport" bad_bot
SetEnvIfNoCase User-Agent "^TeleportPro" bad_bot
SetEnvIfNoCase User-Agent "^Telesoft" bad_bot
SetEnvIfNoCase User-Agent "^The Intraformant" bad_bot
SetEnvIfNoCase User-Agent "^TheNomad" bad_bot
SetEnvIfNoCase User-Agent "^TightTwatBot" bad_bot
SetEnvIfNoCase User-Agent "^Titan" bad_bot
SetEnvIfNoCase User-Agent "^toCrawl/UrlDispatcher" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot/1.0" bad_bot
SetEnvIfNoCase User-Agent "^True_Robot" bad_bot
SetEnvIfNoCase User-Agent "^turingos" bad_bot
SetEnvIfNoCase User-Agent "^URLy Warning" bad_bot
SetEnvIfNoCase User-Agent "^VCI" bad_bot
SetEnvIfNoCase User-Agent "^VCI WebViewer VCI WebViewer Win32" bad_bot
SetEnvIfNoCase User-Agent "^Web Image Collector" bad_bot
SetEnvIfNoCase User-Agent "^WebAuto" bad_bot
SetEnvIfNoCase User-Agent "^WebCopier" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit" bad_bot
SetEnvIfNoCase User-Agent "^WebBandit/3.50" bad_bot
SetEnvIfNoCase User-Agent "^Website Quester" bad_bot
SetEnvIfNoCase User-Agent "^WebEnhancer" bad_bot
SetEnvIfNoCase User-Agent "^WebSauger" bad_bot
SetEnvIfNoCase User-Agent "^Webster Pro" bad_bot
SetEnvIfNoCase User-Agent "^WebStripper" bad_bot
SetEnvIfNoCase User-Agent "^WebmasterWorldForumBot" bad_bot
SetEnvIfNoCase User-Agent "^WebZip" bad_bot
SetEnvIfNoCase User-Agent "^WebZip/4.0" bad_bot
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.6" bad_bot
SetEnvIfNoCase User-Agent "^Wget/1.5.3" bad_bot
SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot
SetEnvIfNoCase User-Agent "^Xenu’s Link Sleuth 1.1c" bad_bot
SetEnvIfNoCase User-Agent "^Xenu’s" bad_bot
SetEnvIfNoCase User-Agent "^Zeus" bad_bot
SetEnvIfNoCase User-Agent "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot<Limit GET POST>
order allow,deny
allow from all
Deny from env=bad_bot
</Limit>
Bine, să nu vă imaginaţi că asta oferă protecţie 99%. Mulţi boţi îşi schimbă denumirea în ceva comestibil şi se dau drept browsere de web (Mozilla Firefox de exemplu) pe care nu e chiar OK să le interzicem. Din experienţa mea pot spune că nu vreţi roboţi cu denumirea de "PHP" sau "Perl" prin grădină. N-am văzut unul să facă ceva bun. Ar fi bine dacă aţi interzice şi "Java" însă unii vizitatori legitimi (umani) vor avea probleme în a accesa site-ul.
Cred că este evident că lista mortăciunilor ce n-au voie să aibe treabă prin grădină este mult mai mare. Deci dacă aveţi şi voi ceva propuneri de boţi care trebuiesc bătuţi cu roata de la tractor lăsaţi un comentariu mai jos. Oricum, sper că îi va folosi cuiva.
Buun merci, merci B)
[b]Forbidden[/b]
You don\’t have permission to access / on this server.
[i](Nice pa\’n acu)[/i]
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
i-am bagat un RewriteRule (forbidden ce arunca un 403 )
Ce zici, sa-i bag un redirect undeva pe 403 ?
ErrorDocument 403 [url]http://www.new-site.com/ [/url]
? e haioasa faza astora 😀
:s La mine îţi dă 403-ul (Forbidden)? :s
nu nu, la mine zic/e treaba
😆 Am înţeles. Păi e bine să mai dea din când în când câte un 403, să nu uite roboţii unde le e locul… 😆 Apropo, şi tu eşti huhurez şi nu poţi să dormi? 😆
ziua(doar in weekend) nu prea am loc (de nevasta-mea)
nenorocire mare cu scrabble 😀
😆 N-am ami jucat scrabble din 1392 primăvara (prin Februarie, aşa)… 😆
Mie îmi dă mesajul ăsta la muncă când accesez pagina ta 👿
Forbidden access
Sorry. You are visiting this site from a suspicious IP address, which triggered our protection system.
If you ARE NOT a malware robot of any kind, please accept our apologies for the unconvenience. You can access the page by clicking here : >>>>>>
😆 Dacă ai IP privat atunci sigur un computer din reţea este plin de spyware. Dacă ai IP public atunci sigur ai tu spyware. Oricum, site-ul spune că ceva încearcă să-l mişune… 😆 După dezinfectare durează cam 4 sătămâni să dispară. Ştiu că şi mie îmi făcea aşa. Mă lua cu spume dar îmi trecea. 😆
Misto articol. Felicitari!
😆 Mulţumesc frumos. 😉
PS2: Fi-ți-ar character excaping-ul de râs! Am editat de 10 ori commentu\’ până să reușesc să îl conving să nu mai îmi șteargă jumate din el din cauză că am băgat niște taguri de forma <xxx><⁄xxx>.
Mda, se pare că trebuie să fac excape manual la < (adică: & lt ; ) și la <⁄ (adică: & lt ; & frasl ; ).
😆 Într-adevăr, uitasem de OPTIONS, PUT şi DELETE. O să le blochez şi pe alea. 😆 Mulţam fain. Şi da, mi-ai umplut inbox-ul cu modificările. 😆
Whoops 😀 My bad. Mi-a fost lene să scriu în Notepad++ 😀
😆 Nu e nicio problemă. Eu îţi mulţumesc. 😉
Și eu care te credeam mai paranoia de atâta…
După cum zice [url=http://httpd.apache.org/docs/1.3/mod/core.html#limit]aici[/url], tu ai limitat doar GET și POST. Bine, din ce scrie acolo, limitând GET, ai limitat implicit și metoda HEAD (și nu PUT). Se pare că metoda TRACE nu poate fi limitată. Totuși, rămân restul (OPTIONS, PUT, DELETE) pe care nu sunt sigur că le limitează implicit. În fine, să zicem că e relevant să limitezi doar GET și POST pentru că mă gândesc că site-ul ăsta nici nu le folosește pe restul… Bine, s-ar putea să mă înșel pentru că nu mă prea pricep la protocolul HTTP 😀
Oricum, eu aș fi încercat să caut o listă cu toți user-agents de la IE, Mozilla, Chrome, Opera și Safari și aș fi făcut ceva de genu\’:
SetEnvIfNoCase User-Agent ^$ good_bot
SetEnvIfNoCase User-Agent "^IE_6" good_bot
SetEnvIfNoCase User-Agent "^IE_7" good_bot
SetEnvIfNoCase User-Agent "^IE_8" good_bot
SetEnvIfNoCase User-Agent "^Mozilla" good_bot
……………………………………
<Limit GET POST>
order deny, allow <- a se remarca că am schimbat ordinea
allow from env=good_bot
deny from all
<⁄Limit>
Bine, dacă vrea careva neapărat, sigur poate modifica headerele HTTP, punând un user-agent de Mozilla de exemplu… Totuși, măcar scapi de copii proști care downloadează mizerii de pe net și apoi se joacă cu ele…
PS: Ești bulangiu mă că blochezi WebZip-ul 😛