Göra något åt referrer spam (och remote image linking)

Ett nästan lika irriterande problem som spam i kommentarer är något som kallas “Referrer spam”. På webben är “Referrer” (att översätta det till “hänskjutande” gör nog ingen klokare :-) vart en besökare kommer från.

Innan man vet ordet av så fylls ens Referrer statistik med länkar till en massa oseriösa hemsidor som vill sälja saker*. De stjäl bandbredd, datorkapacitet och strular till all besök och Referrer statistik totalt. Precis som med e-postspam räknas denna typ av spam i hundratals om inte tusentals.

(* Det finns folk som av någon outgrundlig anledning köper saker av dessa spammare, annars skulle de inte hålla på. Jag tycker nästan lika illa om dessa personer som spammarna själva.)

Läs vidare för tips på hur man gör något åt referrer spam.

Uppdaterad 2005-04-30 Uppdaterad 2005-07-11

Om en besökare på Combonets hemsida klickar på länken till xdeb.org som finns där blir Referrer “www.combonet.se…”. Detta registreras på xdeb.org och jag kan se statistik över Referrers. Det är kul att se vart folk kommer ifrån och t. ex. få veta att majoriteten av besökare hit kommer via sökningar på Google. (Besökare som skriver in “xdeb.org” manuellt eller klickar på ett bokmärke/favorit har igen Referrer.)

Tyvärr har några blog-verktyg valt att göra Referrer statistiken publik. Detta gjorde det intressant för spammare. Ytterligare ett ställe för dem att synas på och för Google att räkna länkar på (så ens sida hamnar högre upp vid sökningar). Spammare vet också att många bloggare, som jag, gillar att kolla igenom Referrer statistiken själva.

Så vad ska man göra åt detta? De flesta biter ihop och ser det som något oundvikligt. De flesta använder ju fortfarande Microsoft Windows trots alla säkerhetsproblem med virus spyware etc. Själv använder jag Mac/Linux, Bayesian Filtering mot e-postspam etc. och vill göra något åt detta senaste problem också.

Ett varningens ord. De tips på åtgärder som jag nämner nedan kräver visst mått av Unix-erfarenhet. De förutsätter också att du använder Apache på Linux/BSD etc. Att leka runt i htaccess-filer utan kunskap är inte att rekommendera, du ställer lätt till det så att ingen kan komma fram till din sida. Jag tar inget ansvar för att förslagen nedan verkligen fungerar eller att de inte ställer till med saker bla bla. För er som fortfarande läser, nu kör vi :-).

En sökning på nätet ledde till artiklar som:

Majoriteten av lösningar handlar om att blockera/dirigera om trafik från “dåliga” referrers med hjälp av mod_access/mod_setenvif och/eller mod_rewrite. Det går att göra mer “elaka” saker med mod_rewrite (som att dirigera om spammarna till deras egna servrar) men det tar också lite mer kapacitet än en enkel blockering med mod_access/mod_setenvif. Med moderna snabba datorer spelar detta nog inte så stor roll gissar jag. Då xdeb.org ligger på ett webb-hotell med många andra kunder föredrar jag att bara blockera när det räcker.

Sitter man med sin egen server kan detta göras direkt i httpd.conf (Apaches konfigurations-fil). Då måste man också starta om Apache för att förändringarna ska träda i kraft. På ett webb-hotell får man hålla sig till sina egen htaccess-fil (.htaccess). Där kan man bara göra saker som httpd.conf ger en rätt att göra men förändringar träder i kraft direkt. De flesta webb-hotell har nog tillgång till mod_access/mod_setenvif men mod_rewrite är ibland inte aktiverat.

Här följer den bit ut min htaccess-fil som den senaste veckan tagit hand om majoriteten av referrer spam. Detta är resultatet av klipp och klistrande från ovanstående sidor och en del eget testande.

Uppdateringar 2005-04-30:

  1. Jag har blockerat en känd User-Agent som diverse spam-program använder, det är egentligen den som Internet Explorer i Windows Server 2003 ger i från sig men det kan inte vara många som på riktigt surfar från en sådan maskin.

  2. Lagt till blockering av alla (sub)domännamn med minst två bindestreck. Spammare älskar bindestreck av någon anledning men jag har inte sett en ende riktig webb-plats som använder dem i sina (sub)domännamn.

  3. Gjort små korrigering av de rader som släpper igenom besökare som kommer via en sökmotorer.

    Uppdateringar 2005-07-11:

  4. Tog bort filtrering av “User-Agent”. Den första raden stoppade numera fler riktiga besökare än spammare och den andra verkade inte fylla något syfte längre.

# Apache htaccess file

# Keep bad people out

# Stop Spam Referrers

# Spammers love (sub)domain names with two hyphens
SetEnvIfNoCase Referer "^http://[^/]+-[^/]+-.*" spam_ref

# From these top domains I have not seen anything good coming
SetEnvIfNoCase Referer ".*\.info$" spam_ref
SetEnvIfNoCase Referer ".*\.biz$" spam_ref
SetEnvIfNoCase Referer ".*\.cc$" spam_ref
SetEnvIfNoCase Referer ".*\.tv/?$" spam_ref
SetEnvIfNoCase Referer ".*\.ws/?$" spam_ref

# Look for the catch words spammers are using
SetEnvIfNoCase Referer ".*(put|bad|words|here).*" spam_ref

# Let Google, MSN etc. searches through
SetEnvIfNoCase Referer "^http://www\.google\..+/search.*$" !spam_ref
SetEnvIfNoCase Referer "^http://www.eniro\.se/query.*$" !spam_ref
SetEnvIfNoCase Referer "^http://.*search\.msn.*/results\.aspx.*$" !spam_ref
SetEnvIfNoCase Referer "^http://.*altavista\.com/web/results.*$" !spam_ref

order deny,allow
deny from env=spam_ua
deny from env=spam_ref
# Known comment spambot, lets block them
deny from 12.163.72.13

OBS! I delen (put|bad|words|here) måste man förstås byta ut exempelorden mot de ord och fraser spammarna använder. Dessa ändras hela tiden så det är liten poäng att skriva ned min lista och dessutom är det mest fula ord som jag inte vill skriva i onödan.

När man ska konstruera sökbegreppen för att, i detta fall, fånga referrer spam behöver man kunna lite regexp. Längst ned i artikeln har jag tips på resurser för den intresserade. En miniintroduktion finns på sidan Regular Expressions - XdebWiki.

När vi ändå håller på i htaccess-filen kan jag tipsa om hur man förhindrar folk från att länka direkt till bilder på ens server. På engelska kallas det “remote/hot image linking” och är mycket dåligt uppförande då man stjäl någon annas bilder och deras bandbredd.

Här tar vi och förbjuder alla utom ett antal godkända undantag att länka till våra bilder. Vi undantar förstås alla vanliga besökare (tom referrer), vår egen sida och om man vill Google, Altavista etc.

# Apache htaccess file

# Prevent remote image linking but allow some good sites
SetEnvIfNoCase Referer "^$" img_link
SetEnvIfNoCase Referer "^http://(www\.)?example\.com.*$" img_link
SetEnvIfNoCase Referer "^http://crawl.*\.googlebot\.com.*$" img_link
SetEnvIfNoCase Referer "^http://images\.google.*$" img_link
SetEnvIfNoCase Referer "^http://www\.google\..*$" img_link
SetEnvIfNoCase Referer "^http://web\.archive\.org.*$" img_link
SetEnvIfNoCase Referer "^http://translate\.google\..*$" img_link
SetEnvIfNoCase Referer "^http://babel\.altavista\..*$" img_link
SetEnvIfNoCase Referer "^http://babelfish\.altavista\..*$" img_link
SetEnvIfNoCase Referer "^http://world\.altavista\.com.*$" img_link

<FilesMatch "\.(gif|GIF|jpe?g|JPE?G|png|PNG)$">
  order allow,deny
  allow from env=img_link
</FilesMatch>

OBS! Byt ut “example.com” mot din egen domän. Om du glömmer bort den detaljen så kommer alla bilder att blockeras på din egen sida också, och det var ju inte meningen.

Resurser för Apache och mod_access, mod_setenvif och mod_rewrite:

Resurser för den som vill läsa på om Regular expressions:

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • No HTML tags allowed
  • Lines and paragraphs break automatically.

More information about formatting options