Izbornik Zatvoriti

Hotlinking: kad vam drugi sajtovi troše resurse

Skraćena veza: https://pedja.supurovic.net/veza/3259

Imate lep sajt, pun je sličica, ne pravite pitanje što vaše fotografije i ilustracije ljudi koriste i na drugim sajtovima i sve je naizgled lepo, sjajno i ružičasto, ali se pojavljuje problem – vaš sajt troši sve više i više resursa.

Razlog je obično u tome što drugi sajtovi umesto da kod sebe iskopiraju ilustraciju koju žele da koriste, stave direktan link na sliku koja se nalazi na vašem sajtu. Tako svaki njihov posetilac iako gleda njihove strane, slike učitava sa vašeg sajta i, praktično, vi sve to plaćate.

Ako se pogodi da neko vašu sliku postavi na kakav veoma posećen sajt, forum ili portal, jao vama. Takav sajt za nekoliko sati može da vam potroši sve resurse. Ako ste nekada naišli na poruku „Bandwidth exceeded.“ to je to. Resursi nisu neograničeni, a obično ih imate onoliko koliko ste platili. Kada sajt potroši resurse, postaje nedostupan. A to ne želite.

Ako se odlučite da tražite ko sve koristi vaše slike i troši vam protok, potrošićete mnogo vremena, a nećete mnogo postići. Čak i da nahvatate sve, teško ćete ih ubediti da uklone problematične linkove. Zato ostaje drugi način: onemogućite prikaz slika na drugim sajtovima (hotlink protection).

Kako zaštiti sajt

Zaštita se izvodi relativno jednostavno korišćenjem .htaccess datoteke (pisao sam već o njenoj upotrebi, vidite slične članke). Sve to je potrebno, to je da se za sve slučajave kada se slika koristi sa nekog sajta koji nije na listi dozvoljenih, umesto nje prikaže namenska sličica koja obaveštava da takvo korišćenje slike nije dozvoljeno.

U .htaccess datoteku treba ubaciti sledeće komande:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !http://www.mojsajt.com
RewriteCond %{HTTP_REFERER} !http://www.nekidrugisajt.com
RewriteCond %{HTTP_REFERER} !http://www.trecisajt.com
RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.mojsajt.com/hotlinking.png [L]
Primer sličice hotlinking.png
Primer sličice hotlinking.png

Osim prve komande RewriteCond, ostale ukazuju na sajtove za koje treba dozvoliti prikazivanje slika. Komanda RewriteRule za sve sajtove osim odobrenih preusmerava prikaz gif, jpg, jpeg i png slika na namensku sličicu sa obaveštenjem da takvo linkovanje nije dozvoljeno (hotlinking.png). Sličica treba da bude što manja, jer se ona prikazuje na svim sajtovima koji nekorektno linkuju, tako da se i dalje troše vaši resursi. Što je sličica kraća, to je i potrošnja manja. Nemojte u nju stavljati mnogo grafičkih efekata i boja – neka bude što jednostavnija.

Ovaj primer odgovara WordPress blogu, ali se na sličan način može uraditi zaštita i bilo kojeg drugog sajta.

Korišćenje ovakve zaštite ima i svojih mana. Pre svega, ograničavate prikaz sličica na svim sajtovima tako da će to pogoditi i ljude koji to rade sa dobrom namerom. Dobro je da unapred napravite spisak sajtova kojima ćete dozvoliti da direktno koriste slike. Ako je blog u pitanju, to znači da treba dozvoliti prikaz slika blog agregatorima kao što su na primer Blogodak, Planetod i slični.

Obrnuta logika

Ako želite da izbegnete probleme koji su posledice zabrane svima da prikazuju fotografije direktnim linkovima sa vašeg sajta, a ipak želite da neke sajtove onemogućite u tome, onda je potrebno malo izmeniti logiku komandi i dobijate urpavo to. Svima je dozvoljeno da prikazuju fotografije, osim onim sajtovima koje navedete.

To je dobro jer tako možete da reagujete ako se pravi neki sajt koji je veoma posećen i koji vam crpi resurse mnogo više nego što je to prihvatljivo, a opet, ostali sajtovi gde se pojavi vaša sličica, a koji ne predstavljaju veliko opterećenje, neće imati problema.

Izmenjena pravila izgledaju ovako:

RewriteEngine On
RewriteCond %{HTTP_REFERER} www.zabranjensajt1.com
RewriteCond %{HTTP_REFERER} www.zabranjensajt2.com
RewriteCond %{HTTP_REFERER} www.zabranjensajt3.com
RewriteCond %{HTTP_REFERER} www.zabranjensajt4.com
RewriteRule (wp-content/uploads.*\.(gif|jpg|jpeg|png)$) http://www.mojsajt.com/hotlinking.png [L]

Dakle RewriteCond komandama navodite sajtove kojima nije dozvoljeno da linkuju slike. Primetite da je razlika u tome što sada string u uslovu nema znak „!“ ispred.

11 Comments

  1. Aleksandar

    Jeste da nije ništa novo i nepoznato, ali može da koristi početnicima koji se nisu sretali sa ovim problemom (što je meni pravio Bad bunny iz zapisa o crvu za OpenOffice.org koji je postavljen na MajSpejs, pa to je čudo jedno. No, brzo sam rešio problem baš na ovaj način :)

  2. Peđa

    Trebalo je da mi pošalješ tačnu putanju strane na kojoj se ovo prikazuje da ubacim izuzetak kako bi se slike videle.

  3. Peđa

    Zato sam u članku pokazao da se hotlinkovanje može rešavati i tako što se podrazumevano svima dozvoljava linkovanje a blokiraju se pojedinačni sajtovi koji to zloupotrebljavaju.

    Ja sam se odlučio da sve blokriam a dozvoljavam probranima, zato što mi blog počinje da praviozbiljan problem – ovih dana će preći 15 Gb protoka od početka meseca. Zaista mnogo resursa troši a jedan od ozbiljnijih problema je urpavo hotlinking, jer imam dosta fotografija.

    Na jednom sajtu koji administriram se pojavio sličan problem a sajt u stvari nije obiman ali sadrži neke interesantne PDF dokumente (legalne). Neveroatan je broj konekcija za preuzimanje tih dokumenata ali je interesantno da veliki broj preuzimanja potiče sa jednog te istog IP (jedana isti dokument sa jednog te istog IP je preuzet i desetinama ako ne i stotinama puta), a pri tom uopšte nema reference u konekciji, dakle radi se o direktnom preuzimanju, verovatno pomoću nekog daunloud menadžera, pošto ne mogu da zamislim da je neko toliko puta ponovio preuzimanje ručno iz veb čitača.

    • Peđa

      Podešavanje .htaccess može da se razlikuje od servera do servera. Nađi nekog ko je upućen u to kako j epodešen tvoj server da ti to namesti.

Ostavite odgovor

Vaša adresa e-pošte neće biti objavljena. Neophodna polja su označena *

Popunite izraz tako da bude tačan: *

Ovo veb mesto koristi Akismet kako bi smanjilo nepoželjne. Saznajte kako se vaši komentari obrađuju.