user_agent访问控制

user_agent是什么?

是访问客户端浏览器的标识,可以有效的标识浏览器及浏览器的承载平台

user_agent的作用?

使服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
根据不同的客户端推送不同的内容,windows访问www.xxx.com phone访问wap.xxx.com

1.需求

搭建公司elk时发现某一网站的user_agent的客户端为 OPPO A33

Mozilla/5.0(Linux;Android 5.1.1;OPPO A33 Build/LMY47V;wv) AppleWebKit/537.36(KHTML,link Gecko) Version/4.0 Chrome/42.0.2311.138 Mobile Safari/537.36 Mb2345Browser/9.0

经过百度和查询ip地址,发现是一个爬虫的客户端!
所以想屏蔽这个客户端的访问请求

2.思路

通过检索user_agent的值 是否包含OPPO A33 如果没有这个值放行,有这个值返回403

3.行动

在apache的配置文件种添加rewrite规则
80及443的虚拟主机配置文件都添加请求
实例:

  <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]   #OR "或" 无此标签则表示"且"
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F]   #403 forbiden "-"不进行跳转,直接403
    </IfModule>

虚拟主机配置:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot "/www/wwwroot/www.xxx.com/"
    ..........
     <IfModule mod_rewrite.c>    
       RewriteEngine on          
       RewriteCond %{HTTP_USER_AGENT} .*OPPO\ A33.* [NC]
       RewriteRule .* - [F]
     </IfModule>
<VirtualHost *:443>
    ServerAdmin webmaster@example.com
    DocumentRoot "/www/wwwroot/www.xxx.com/"
    .......
    
    <IfModule mod_rewrite.c>    
       RewriteEngine on          
       RewriteCond %{HTTP_USER_AGENT} .*OPPO\ A33.* [NC]
       RewriteRule .* - [F]
     </IfModule>

4.结果

4.1 使用curl修改user_agent

root@qdmaolian:/home/rongbiz# curl -A 'OPPO A33' https://httpbin.org/get
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "OPPO A33", 
    "X-Amzn-Trace-Id": "Root=1-63998896-7fbf0ff747a0b5103a5c2138"
  }, 
  "origin": "27.223.91.246", 
  "url": "https://httpbin.org/get"
}

4.2 验证是否生效

root@dwxz:~# curl -A "OPPO A33"   https://www.rongbiz.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache Server at www.rongbiz.com Port 443</address>
</body></html>
posted @ 2022-12-14 16:35  老夫聊发少年狂88  阅读(68)  评论(0编辑  收藏  举报