Я использую Apache2 с Ubuntu 16.04 и PHP7.0. Я попытался использовать настройку .htaccess, но, похоже, это не сработало, т.е. не помешало анонимным прокси-серверам посещать веб-сайт.
Я пробовал это решение http://www.phpgenious.com/2009/03/block-proxy-servers-using-htaccess/
RewriteEngine on
RewriteCond %{HTTP:VIA} !^$ [OR]
RewriteCond %{HTTP:FORWARDED} !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
RewriteRule ^(.*)$ – [F]
Другой вариант - использовать BlockScript https: // www.blocked.com/, что кажется довольно дорогим.
Да, запись «пожалуйста, запретите все прокси-серверы» в .htacces
, естественно, не сработает .... Или ты написал что-то еще?
В любом случае это невозможно. Прокси-сервер ничем не отличается от обычного веб-браузера, и вы не можете надежно отделить прокси от «обычных» клиентов.
Я нашел решение, которое блокирует анонимные прокси. Моя целевая аудитория ограничена страной. Итак, я использовал это решение https://coderwall.com/p/dqqz5q/apache-block-specific-countries-using-mod_geoip
и использовал Geoip, чтобы разрешить доступ только для определенной страны на мой веб-сайт. Это работает, потому что Geoip для анонимных IP-адресов отображается как A1 и т. Д. ( https://dev.maxmind.com/geoip/legacy/codes/iso3166/ )
Итак, в случае Ubuntu, в 000-default virtualhost
<Directory /var/www/>
....
....
# Only allow specific countries
GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE GB AllowCountry
Deny from all
Allow from env=AllowCountry
</Directory>
Здесь разрешена только страна GB, то есть Великобритания. Я тестировал это с помощью многих анонимных прокси-сайтов (даже расположенных в целевой стране), и веб-сайт отвечает 403. Доступ без прокси-сервера работает нормально.