android - htaccess 针对代理的保护

标签 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 或移动 4G 连接到互联网,无需任何代理。代理设置由 Google 在其服务器内部设置。

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

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

我已经尝试过了,但没有成功:

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

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

请告诉我。谢谢。

最佳答案

您可以执行以下操作,您可以将所有“Android”用户代理列入白名单,或者当“VIA” header 是压缩代理时将其列入白名单。当你加入白名单时,不能是“OR”的条件,必须满足。

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”部分或via中的“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]

关于android - htaccess 针对代理的保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065801/

相关文章:

java - 当我按“获取位置”按钮时,我的应用程序崩溃

Apache .htaccess 在要求用户身份验证之前重定向到 HTTPS

php - .htaccess 重写/到 index.html,所有其他到 index.php

php - 将 PHP 图片资源标识符转换为 html <img> 元素

vb.net - WebBrowser 控件无法与文本文件中的代理一起使用

entity-framework - 为什么我的 Entity Framework Code First 代理集合为 null 并且无法设置它?

PHP 多 curl - 找出特定 curl 句柄使用了什么代理

android - 启用 Android 零售演示

android - 从 Facebook 获取电子邮件 - FB android SDK

android - Android 中的设置