新建配置配置文件 (例如进入到nginx安装目录下的conf目录,创建: agent_deny.conf) 禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; }
禁止指定UA及UA为空的访问
#forbidden Scrapyif ($http_user_agent ~* (Scrapy|Curl|HttpClient)){ return 403;}#forbidden UAif ($http_user_agent ~ "Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ){ return 403;}#forbidden not GET|HEAD|POST method accessif ($request_method !~ ^(GET|HEAD|POST)$){ return 403;} 然后,在网站相关配置中的 server段插入如下代码: include agent_deny.conf; 重启nginx:
/data/nginx/sbin/nginx -s reload 测试 使用curl -A 模拟抓取即可,比如: 结果
[root@11 conf]# curl -I -A 'YYSpider' www.xxx.cn HTTP/1.1 403 Forbidden Server: nginx/1.12.0 Date: Wed, 24 Apr 2019 11:35:21 GMT Content-Type: text/html Content-Length: 169 Connection: keep-alive
模拟UA为空的抓取:
结果
[root@11 conf]# curl -I -A' ' www.xxx.cn HTTP/1.1 403 Forbidden Server: nginx/1.12.0 Date: Wed, 24 Apr 2019 11:36:06 GMT Content-Type: text/html Content-Length: 169 Connection: keep-alive
模拟百度蜘蛛的抓取:
curl -I -A 'Baiduspider' <<<www.xxx.cn>>> [root@11 conf]# curl -I -A 'Baiduspider' www.xxx.cn HTTP/1.1 200 OK Server: nginx/1.12.0 Date: Wed, 24 Apr 2019 11:36:47 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Fri, 12 Apr 2019 13:49:36 GMT Connection: keep-alive ETag: "5cb09770-264" Accept-Ranges: bytes
UA类型
FeedDemon 内容采集BOT/0.1 (BOT for JCE) sql注入CrawlDaddy sql注入Java 内容采集Jullo 内容采集Feedly 内容采集UniversalFeedParser 内容采集ApacheBench cc攻击器Swiftbot 无用爬虫YandexBot 无用爬虫AhrefsBot 无用爬虫YisouSpider 无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)jikeSpider 无用爬虫MJ12bot 无用爬虫ZmEu phpmyadmin 漏洞扫描WinHttp 采集cc攻击EasouSpider 无用爬虫HttpClient tcp攻击Microsoft URL Control 扫描YYSpider 无用爬虫jaunty wordpress爆破扫描器oBot 无用爬虫Python-urllib 内容采集Indy Library 扫描FlightDeckReports Bot 无用爬虫Linguee Bot 无用爬虫 nginx 防盗链配置
背景:防止第三方引用链接访问我们的图片,消耗服务器资源和网络流量,我们可以在服务器上做防盗链限制。 实现防盗链的方式有两种:refer方式和签名方式。 refer方式实现防盗链 工作模块:ngx_http_referer_module。 作用变量:$invalid_referer,全局变量。 配置域:server, location 配置:
server { listen 80; server_name www.imcati.com refer-test.imcati.com; root /usr/share/nginx/html; location ~*/.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked www.imcati.com; if ($invalid_referer) { return 403; } } } - valid_referers: 指定资源访问是通过以下几种方式为合法,即白名单。 vaild_referers 有效的引用连接,如下,否则就进入$invaild_refere,返回403 forbiden。
- none:允许缺失的头部访问。
- blocked:允许referer没有对应值的请求。
- server_names:若referer站点域名与server_name中本机配的域名一样允许访问。
下载地址: Linux Centos下使用脚本安装Docker的方法 Nginx服务器如何设置url链接 |