Nginx 利用 USER-AGENT 过滤请求

本文将介绍怎样使用 nginx 通过过滤 user-agent 实现阻止特定的请求。

什么是 User-Agent?

User-Agent是一个HTTP请求头字段,用于标识发起请求的用户代理(例如浏览器、爬虫、自动化程序等)。它包含了一些关于用户代理的信息,例如操作系统、浏览器名称和版本等。

User-Agent的格式通常为:

User-Agent: <user_agent_string>

例如:

Nginx 利用 USER-AGENT 过滤请求

常见 User-Agent

下面是一些常见的 User-Agent 示例:

1. Chrome 浏览器(Windows)

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

2. Safari 浏览器(Mac)

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15

3. Firefox 浏览器(Windows)

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0

4. Edge 浏览器(Windows)

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59

5. iPhone 的 Safari 浏览器

User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1

通过解析 User-Agent 字段,可以获取有关用户代理的信息,例如操作系统、浏览器类型和版本等,这对于服务器端应用程序来说是有用的,可以根据用户代理的不同来提供定制化的内容或功能。

Nginx 过滤 User-Agent

下面示例通过过滤 User-Agent 阻止常见爬虫访问服务器资源,nginx.conf 配置如下:

worker_processes  1;
debug_points abort;
events {
    worker_connections  1024;
    #accept_mutex on;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    include       server_demo.conf;
    log_format  main  '$pid - $connection - $request_uri - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8080;
        server_name  localhost;
        # 关键配置
        # 使用 user_agent 阻止百度、360、google 和必应搜索引擎抓取
        # 如果 user_agent 字符串包含 Baiduspider、360spider、Googlebot 和 bingbot 字符串
        # 中任何一个,则直接返回 404 状态
		if ($http_user_agent ~* (Baiduspider|360spider|Googlebot|bingbot) ) {
			return 404;
		}
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
学习知识要善于思考,思考,再思。我就是靠这个方法成为科学家的。 —— 爱因斯坦
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号