针对PROXIES的htaccess保护

时间:2014-04-14 16:52:58

标签: android .htaccess proxies

我使用此代码(网络中的一些论坛推荐)使用htaccess文件阻止代理到我的网站文件:


RewriteEngine on    
RewriteCond %{HTTP:XROXY_CONNECTION}    !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED-FOR}     !^$ [OR]    
RewriteCond %{HTTP:FORWARDED-FOR}       !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED}         !^$ [OR]    
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]

这是完美的。然而,自今年以来,GOOGLE更新了他的ANDROID平台,其新功能名为: “数据压缩代理”(使用名为“减少数据使用”的浏览器设置中的选项)。根据这篇帖子在2014年1月更新,我可以看到它是Android设备的新功能: https://developers.google.com/chrome/mobile/docs/data-compression

现在htaccess代码仍然阻止了我需要的代理,但此外它还阻止了使用Chrome Mobile从Android设备发出的所有请求。即使Android手机用户通过WIFI或Mobile 4G连接到互联网而没有任何代理。代理设置由Google内部在其服务器上设置。

当然,如果用户禁用该选项(我在手机中默认设置为“打开”),他们可以访问我的网站。

我需要知道在同一代码中是否有一个将GOOGLE android PROXIES列入白名单的方法?我的意思是,来自Google.com的推荐人代码?

我已经尝试了这个但是没有用:

RewriteCond%{HTTP_REFERER}!。 google.com。 [或]

我不想将原始代码更改为阻止每个IP,因为违规者IP阻止代理会在该文件上创建一个大列表,并且更难控制和管理它。

请让我知道。感谢。

1 个答案:

答案 0 :(得分:1)

你可以做几件事,你可以将所有" Android"用户代理,或者您可以将" VIA"标题是压缩代理。当您将白名单列入白名单时,它必须是满足的条件。

Android chrome通过压缩代理的典型请求看起来像这样:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Forwarded: for="xxx"
Scheme: http
Via: 1.1 Chrome Compression Proxy
X-Forwarded-For: xxx
Connection: Keep-alive
User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Nexus 5 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36

所以你可以匹配" Linux;的Android"部分用户代理或" Chrome压缩代理"在通道:

RewriteEngine on   
RewriteCond %{HTTP_USER_AGENT} !Linux;\ Android\ [234]\.[0-9]

RewriteCond %{HTTP:XROXY_CONNECTION}    !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED-FOR}     !^$ [OR]    
RewriteCond %{HTTP:FORWARDED-FOR}       !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED}         !^$ [OR]    
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]

RewriteEngine on   
RewriteCond %{HTTP:VIA} !Chrome\ Compression\ Proxy

RewriteCond %{HTTP:XROXY_CONNECTION}    !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED-FOR}     !^$ [OR]    
RewriteCond %{HTTP:FORWARDED-FOR}       !^$ [OR]    
RewriteCond %{HTTP:X-FORWARDED}         !^$ [OR]    
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]