我在 Ubuntu 16.04 和 PHP7.0 上使用 Apache2。我尝试使用 .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]
另一种选择是使用 BlockScripthttps://www.blocked.com/这似乎相当昂贵。
答案1
是的,写入“请禁止所有代理服务器”.htacces
自然是行不通的......或者你在里面写了别的东西?
无论如何,这是不可能的。代理服务器与普通的 Web 浏览器没什么不同,您无法可靠地将代理与“普通”客户端区分开。
答案2
我找到了一个阻止匿名代理的解决方案。我的目标受众仅限于一个国家。所以我使用了这个解决方案https://coderwall.com/p/dqqz5q/apache-block-specific-countries-using-mod_geoip
并使用 Geoip 仅允许特定国家/地区访问我的网站。它之所以有效,是因为匿名 IP 的 Geoip 显示为 A1 等。(https://dev.maxmind.com/geoip/legacy/codes/iso3166/)
因此,在 Ubuntu 中,在 000-default 虚拟主机中
<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。无需代理即可正常访问。