2

我正在使用此代码(由网络中的一些论坛推荐)使用 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 的代理会在该文件上创建一个大列表,并且更难以控制和管理它。

请告诉我。谢谢。

4

1 回答 1

3

您可以做几件事,您可以将所有“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]
于 2014-04-14T17:04:20.817 回答