Закрыть доступ для всех стран Кроме России

12
H3
На сайте с 03.04.2013
Offline
49
9604

Всем привет. Появилась необходимость закрыть доступ к сайту для всех стран кроме России и СНГ, в интернете ничего конкретного не нашел, понятно что надо с помощью .htaccess но вот как понять какие диапазоны IP и т.д. Может кто знает как организовать такую фильтрацию доступа? Буду крайне признателен. Заранее спасибо за Ваше внимание.

Фильмы онлайн (http://filmi-hd.online) Так, глядишь кому пригодится)))
owx
На сайте с 27.06.2009
Offline
100
owx
#1

Как вариант, можно использовать сторонние библиотеки, например SxGeo, но какой у них процент успешных определений я не могу подсказать.


include 'SxGeo.php';
$SxGeo = new SxGeo('SxGeo.dat', SXGEO_BATCH | SXGEO_MEMORY);
if($SxGeo->getCountry($_SERVER['REMOTE_ADDR']) !== 'RU') {
exit('Доступ к сайту возможен только для пользователей из РФ');
}
H3
На сайте с 03.04.2013
Offline
49
#2

AL этот скрипт достаточно прописать в index.php Я правильно понимаю?

astraliens
На сайте с 25.09.2009
Offline
54
#3

погуглите htaccess geoip и nginx geoip , вопрос не сложный

ну или тот же geoip от maxmind прямо в коде использовать, примеров все там же в гугле много

ASTRALiENS - разработка сайтов (http://astraliens.net)
impossible
На сайте с 12.01.2008
Offline
220
#4

Как варик задавать вопрос при входе на сайт: вопрос на русском (на который ответят тока русские, и обязательно с русской клавиатурой). Потом тому кто заходил (ответил на вопрос) ставить куку и при последующем заходе вопрос не задавать.

owx
На сайте с 27.06.2009
Offline
100
owx
#5
Hellion35:
AL этот скрипт достаточно прописать в index.php Я правильно понимаю?

Для того чтобы сказать наверняка, нужно знать, какой используется скрипт. Вполне возможно, что будет достаточно.

H3
На сайте с 03.04.2013
Offline
49
#6

Спасибо всем. У меня получилось сделать с помощью geoIP. Открыл доступ для UA KZ BY и RU пробую проверить с помощью анонимайзеров. По итогу пускает только из России. Базы обновил от maxmind. Может анонимайзеры кривые или еще в чем то проблема может быть?

p.s. и еще когда указываю в .htaccess

GeoIPDBFile

/usr/share/GeoIP/GeoIP.dat

При попытке зайти на сайт выдает 500 ошибку(((

astraliens
На сайте с 25.09.2009
Offline
54
#7
Hellion35:

p.s. и еще когда указываю в .htaccess

GeoIPDBFile
/usr/share/GeoIP/GeoIP.dat

При попытке зайти на сайт выдает 500 ошибку(((

проверьте есть ли сам файл там и права доступа на него.. и подключен ли сам модуль

ну и в логах должно быть описание проблемы более детально

H3
На сайте с 03.04.2013
Offline
49
#8

В логах вообще тишина((( Что касается файла то да есть, права выставил на файл, работу мода проверил с помощью скрипта

<pre>

Whence are you come to here?:
<?php
$country_code = apache_note("GEOIP_COUNTRY_CODE");
$region = apache_note("GEOIP_REGION");
$country_name = apache_note("GEOIP_COUNTRY_NAME");
$city = apache_note("GEOIP_CITY");
echo "Country code: " . $country_code . "\n";
echo "Region: " . $region . "\n";
echo "Name of country: " . $country_name . "\n";
echo "City: " . $city . "\n";
?>
</pre>

страну определяет без проблем. Базу GeoIP обновлял от maxmind

Что касается настроек, делал вроде все что необходимо.

Логи смотрел по адресу /var/log/apache2/error.log

Если Вы про этот лог то там тишина, может я куда то не туда смотрю?

astraliens
На сайте с 25.09.2009
Offline
54
#9

и там и в логах виртхоста, если они отдельно ведутся

ps. Вы зачем-то городите слишком много, на апач возлагаете определение географии и потом из php кода достаёте данные, если всецело нужно обрезать доступ ко всему, кроме нужных стран апачем, то правильнее будет сделать как-то так

<IfModule mod_geoip.c>

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE UA AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE RU AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE KZ AllowCountry
Allow from env=AllowCountry
Deny from all
</IfModule>

а если нужно именно в php коде, то правильнее было бы напрямую из php работать с базой geoip, определять при первом обращении страну, сохранять в сессию это значение и в дальнейшем при наличии в сессии данных о географии более не перепроверять ничего каждый раз

M
На сайте с 29.08.2024
Offline
31
#10
astraliens #:

и там и в логах виртхоста, если они отдельно ведутся

ps. Вы зачем-то городите слишком много, на апач возлагаете определение географии и потом из php кода достаёте данные, если всецело нужно обрезать доступ ко всему, кроме нужных стран апачем, то правильнее будет сделать как-то так

а если нужно именно в php коде, то правильнее было бы напрямую из php работать с базой geoip, определять при первом обращении страну, сохранять в сессию это значение и в дальнейшем при наличии в сессии данных о географии более не перепроверять ничего каждый раз

Нашел старый пост насчет блокировки в хтаксессе по странам ГЕО.

В интернете нашел вот такой код

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry
Deny from env=BlockCountry

Где:

GeoIPEnable On – включение модуля GeoIP
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry – создание некоего массива (цепочки) BlockCountry в которую вноситься условие что страна CN – Китай
SetEnvIf GEOIP_COUNTRY_CODE FR BlockCountry – тоже самое что и предыдущая строка, только страна в этом случае Франция
Deny from env=BlockCountry – блокирование стран которые находятся в цепочке BlockCountry

------------------------------

Вот все хорошо, но как быть с ботами Гугла, Бинга. Может и другие какие хорошие иностранцы есть.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий