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 [email protected]
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 [email protected]
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>
标签:A33,www,访问控制,agent,user,com,OPPO
From: https://www.cnblogs.com/yangtao416/p/16982536.html