Jak zablokować dostęp do strony WWW dla poszczególnych krajów? [.htaccess]
Czasem zdarza się, że chcemy, aby nasza strona internetowa była np. dostępna tylko dla internautów z Polski. Mogliśmy na przykład podpisać umowę z dostawcami treści, którzy zakazują nam udostępniania ich materiałów poza Rzeczpospolitą. Jak rozwiązać taki problem?
Dla osób korzystających z serwera Apache, pomocą okaże się odpowiednie przygotowanie pliku .htaccess. Ręcznie tego raczej jednak nie zrobimy: przygotowanie odpowiedniego ciągu zablokowanych adresów IP to niezwykle nużące zadanie. Dlatego możemy skorzystać z API geolokalizacji IP, dostarczanego przez serwis blogama.org oraz specjalnego skryptu, który wygeneruje nam plik dostępowy.
Wpierw jednak należy zrozumieć, jak działają reguły w pliku .htaccess. Jeśli ustawimy własność allow dla krajów "PL, DE" (Polska i Niemcy), dopuszczony będzie tylko ruch przychodzący z Polski i Niemiec. Jeśli ustawimy własność deny dla "US, CA", zablokowany będzie tylko ruch przychodzący ze Stanów Zjednoczonych i Kanady. Z pełną listą kodów ISO dla poszczególnych krajów można zapoznać się tutaj.
Wygenerowanie pliku .htaccess za pomocą API geolokalizacji IP jest bardzo proste – usługa dostępna jest pod adresem iplocationtools.com. Przykładowo wygenerowany plik .htaccess może wyglądać następująco:
iplocationtools.com/country_query.php?country=PL&output=htaccess_allow
gdzie parametr country określa listę kodów krajów, oddzielonych od siebie przecinkami, zaś output to typ blokowania.
W rezultacie otrzymamy plik wyglądający następująco:
|
#COUNTRY_BLOCK_START <Limit GET HEAD POST> order deny,allow […] deny from all </Limit> #COUNTRY_BLOCK_END |
Jednak bloki IP często przechodzą z rąk do rąk. Generowanie za każdym razem pliku .htaccess mogłoby się okazać niewygodne. Pomóc może nam skrypt, stworzony przez autorów mechanizmu geolokalizacji z blogama.org.
Zanim go uruchomimy, należy w katalogu roboczym z którego korzystamy stworzyć plik htaccessfile.txt, do którego wprowadzamy wszystkie ścieżki dostępowe do plików .htacces, które chcemy zmieniać. Na przykład:
/var/www/mojblog.pl/.htaccess
/var/www/mojafirma.pl/.htaccess
W samym skrypcie na początku można znaleźć parametry konfiguracyjne:
WORKDIR="/var/www/" – katalog z prawami zapisu, w którym umieszczony jest skrypt,
HTACCESSFILE="htaccessfile.txt" – plik ze ścieżkami dostępu do plików .htaccess,
HTACCESSBLOCK="htaccess-blocklist.txt" – plik roboczy,
TEMPFILE="htaccess.temp" – plik roboczy,
COUNTRIES="PL" – lista krajów,
TYPE="allow" – typ dostępu: ekskluzywny (allow) lub inkluzywny (deny).
Następnie należy nadać skryptowi prawa wykonawcze:
| chmod +x nazwaskryptu.sh |
i dodać go do crontabu
|
* * * * * /ścieżka/nazwaskryptu.sh >/dev/null 2>&1 |
Dzięki temu będziemy mogli regularnie aktualizować bazę zablokowanych (bądź dopuszczonych) adresów.
A oto wspomiany skrypt:
| #!/bin/bash ###BLOGAMA.ORG### ###MODIFY THIS SECTION### WORKDIR="/var/www/" HTACCESSFILE="htaccessfile.txt" HTACCESSBLOCK="htaccess-blocklist.txt" TEMPFILE="htaccess.temp" COUNTRIES="PL" TYPE="allow" ######################### #####DO NOT MAKE MODIFICATIONS BELOW##### cd $WORKDIR #Get the file from blogama.org API wget -c --output-document=$HTACCESSBLOCK "http://blogama.org/country_query.php?country=$COUNTRIES&output=htaccess_$TYPE" for i in $( cat $WORKDIR$HTACCESSFILE ); do if [ -f $i ]; then cat $i 2>&1 | grep "COUNTRY_BLOCK_START" if [ "$?" -ne "1" ]; then #ALREADY IN HTACCESS sed '/#COUNTRY_BLOCK_START/,/#COUNTRY_BLOCK_END/d' $i > $WORKDIR$TEMPFILE cat $WORKDIR$HTACCESSBLOCK >> $WORKDIR$TEMPFILE mv $WORKDIR$TEMPFILE $i else #NOT IN HTACCESS cat $WORKDIR$HTACCESSBLOCK >> $i fi fi done rm -f $WORKDIR$HTACCESSBLOCK |
Popularne
Nazwa padła ofiarą szantażystów, inni polscy hosterzy też zagrożeni?
19
Premiera Diablo 3 wzbudziła dyskusję na temat gier, które zawsze chcą być online
19
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Nowy problem z Windows 8: bootuje się za szybko
10
Amerykańscy rodzice straszeni „e-narkotykami” dostępnymi w Sieci
21
Z okazji wypuszczenia akcji Facebooka przypomnijmy sobie, kim jest Zuckerberg
10
Blueseed: libertariańska sztuczna wyspa przyciągnęła już ponad sto startupów z całego świata
8
Rewolucja w Firefoksie, nowa łatka czterokrotnie ograniczyła zużycie pamięci
20
Darmowy Internet od Aero2. Jak go zdobyć i jakie są prawdziwe koszta? Instrukcja krok po kroku
11
CVDazzle: makijaż jest w stanie pokonać automatyczne systemy ulicznego monitoringu
3
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
17
Co czeka programistów po czterdziestce?
27
Ubuntu 12.04 LTS już dostępny: stabilna dystrybucja na następne pięć lat?
28
Społeczność
stop_gupota "Fanatyczny" Diablo 3 jest dopiero od 10 dni.
Mas Ciekawa informacja, ale akurat projekt wytopu stali przez chłopów to był...
_Igancio Poziom artykułu jest bardzo niski ! Niczego się nie dowiedziałem , wygląda...
voluu A ja mam problem. MIanowicie, po dodaniu kodu z tego poradnika miniaturki...
Sebek Pozycjonowanie stron za pośrednictwem firm oferujących
swoje usługi nie...
asdosad jak to zrobić na xp??
lol Jak ktoś tu wcześniej zauważył - artykuł jest o niczym, a właściwie ukrytą...
- Najdmen.pl: Konta www z wyłączonym licznikiem transferu od IONIC.pl (1)
- 2BE.PL: [Oferta] Promocja jak złoto w 2BE.PL (1)
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
Polecane książki
Praca
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |








