【问题标题】:htaccess protection against PROXIES针对代理的 htaccess 保护
【发布时间】:2014-04-15 01:04:20
【问题描述】:

我正在使用此代码(由网络中的一些论坛推荐)来阻止代理到我的网站文件,使用 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. [OR]

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

请告诉我。谢谢。

【问题讨论】:

    标签: android .htaccess proxies


    【解决方案1】:

    您可以做几件事,您可以将所有“Android”用户代理列入白名单,也可以将“VIA”标头作为压缩代理列入白名单。白名单时,不能是“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”部分或通过中的“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 代理列入白名单,这可以允许访问者在他们的手机中使用其他代理(不仅是谷歌压缩代理,它是我目前唯一想要列入白名单的代理) )
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多