有没有办法通过某些 Apache 配置禁止所有代理服务器访问网站?

有没有办法通过某些 Apache 配置禁止所有代理服务器访问网站?

我在 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。无需代理即可正常访问。

相关内容