一、Apache

①、通过修改 .htaccess 文件

修改网站目录下的.htaccess,添加如下代码即可(2 种代码任选):

可用代码 (1): RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]

RewriteRule ^(.*)$ – [F]

可用代码 (2): SetEnvIfNoCase ^User–Agent$ .*(FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) BADBOT

Order Allow,Deny

Allow from all

Deny from env=BADBOT

②、通过修改 httpd.conf 配置文件

找到如下类似位置,根据以下代码 新增 / 修改,然后重启 Apache 即可:

Shell DocumentRoot /home/wwwroot/xxx

SetEnvIfNoCase User–Agent “.*(FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)” BADBOT

Order allow,deny

Allow from all

deny from env=BADBOT

二、Nginx 代码

进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent_deny.conf cd /usr/local/nginx/conf

vim agent_deny.conf #禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {

return 403;

}

#禁止指定UA及UA为空的访问

if ($http_user_agent ~* “FeedDemon|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|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$” ) {

return 403;

}

#禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {

return 403;

}

然后,在网站相关配置中的 location / { 之后插入如下代码:

Shell include agent_deny.conf;

如下的配置:

Shell [marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf

location / {

try_files $uri $uri/ /index.php?$args;

#这个位置新增1行:

include agent_deny.conf;

rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last;

rewrite ^/sitemap_baidu_sp.xml$ /sitemap_baidu_sp.php last;

rewrite ^/sitemap_m.xml$ /sitemap_m.php last;

保存后,执行如下命令,平滑重启 nginx 即可:

Shell /usr/local/nginx/sbin/nginx –s reload

三、PHP 代码

将如下方法放到贴到网站入口文件 index.php 中的第一个

PHP //获取UA信息

$ua = $_SERVER[‘HTTP_USER_AGENT’];

//将恶意USER_AGENT存入数组

$now_ua = array(‘FeedDemon ‘,‘BOT/0.1 (BOT for JCE)’,‘CrawlDaddy ‘,‘Java’,‘Feedly’,‘UniversalFeedParser’,‘ApacheBench’,‘Swiftbot’,‘ZmEu’,‘Indy Library’,‘oBot’,‘jaunty’,‘YandexBot’,‘AhrefsBot’,‘MJ12bot’,‘WinHttp’,‘EasouSpider’,‘HttpClient’,‘Microsoft URL Control’,‘YYSpider’,‘jaunty’,‘Python-urllib’,‘lightDeckReports Bot’);

//禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT

if(!$ua) {

header(“Content-type: text/html; charset=utf-8”);

die(‘请勿采集本站,因为采集的站长木有小JJ!’);

}else{

foreach($now_ua as $value )

//判断是否是数组中存在的UA

if(eregi($value,$ua)) {

header(“Content-type: text/html; charset=utf-8”);

die(‘请勿采集本站,因为采集的站长木有小JJ!’);

}

}

四、测试效果

如果是 vps,那非常简单,使用 curl -A 模拟抓取即可,比如:

模拟宜搜蜘蛛抓取:

Shell curl –I –A ‘YisouSpider’ bizhi.bcoderss.com

模拟 UA 为空的抓取:

Shell curl –I –A ” bizhi.bcoderss.com

模拟百度蜘蛛的抓取:

Shell curl –I –A ‘Baiduspider’ bizhi.bcoderss.com

php 禁止抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站相关推荐

  1. php禁止网页抓取,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站 - 龙笑天下...

    我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守 robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如 YY 蜘蛛(Yiso ...

  2. php 防止爬虫,服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

    我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,最近发现nginx日志中出现了 ...

  3. php 爬虫ip被封,服务器反爬虫攻略Nginx/PHP禁止某些User Agent抓取网站

    我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider), 也有不但不遵守 robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(Yisou ...

  4. 抓取手机https_python爬虫入门02:教你通过 Fiddler 进行手机抓包

    哟~哟~哟~ hi起来 everybody 今天要说说怎么在我们的手机抓包 通过 python爬虫入门01:教你在 Chrome 浏览器轻松抓包 我们知道了 HTTP 的请求方式 以及在 Chrome ...

  5. Python 爬取蚂蜂窝旅游攻略 (+Scrapy框架+MySQL)

    前言:使用python+scrapy框架爬取蚂蜂窝旅游攻略 Git代码地址:https://github.com/qijingpei/mafengwo 获取代理IP地址的开源项目ProxyPool-m ...

  6. 方舟服务器参数文件夹,方舟生存进化私人服务器怎么设置 私人服务器参数调整攻略...

    方舟生存进化私人服务器怎样设定?得到使用权后,就能设置进入途径.这里手机乐园夏了夏天小编介绍详情,接着往下看! 私人服务器参数调整攻略 私人服务器购买后,服主可以在里边配置自己的服务器信息. 私人服务 ...

  7. 流放者柯南自建服务器 linux,《流放者柯南》自建服务器简易教程攻略

    当前位置:电玩巴士游戏专题 热门攻略 <流放者柯南>自建服务器简易教程攻略 作者:未知 来源:游侠网 发布时间:2017年02月06日 <流放者柯南>作为一款多人联机开放生存游 ...

  8. 网吧的服务器设置全攻略

    网吧的服务器设置全攻略 作者: 出处:网吧联盟  ( 60 ) 砖  ( 60 ) 好  评论 ( 1 ) 条 进入论坛 更新时间:2006-03-01 11:37 关 键 词:网吧服务器应用设置 阅 ...

  9. 伤害世界怎么自建服务器,伤害世界服务器怎么建 伤害世界服务器架设教程攻略...

    伤害世界服务器怎么建 伤害世界服务器架设教程攻略.很多玩家还不清楚伤害世界服务器怎么架设,怎么连接,下面99单机网小编给大家带来伤害世界服务器架设教程攻略,希望能帮到大家. 首先准备工作,下载服务端并 ...

最新文章

  1. VS2005发布、生成网站时如何设置固定的dll文件名?
  2. 1.11实例:保存图书信息
  3. Google 宣布将 Istio 商标转移给 Open Usage Commons | 云原生生态周报 Vol. 57
  4. 从容器到容器云,什么才是 Kubernetes 的本质?
  5. java lambda 表达式中的双冒号和箭头的用法 ::
  6. 一文详解CSS常见的五大布局
  7. java学习(七)java中抽象类及 接口
  8. (计算机组成原理题目题型总结)第四章:指令系统
  9. systemd 开机无法启动privoxy
  10. 【clickhouse】clickhouse 表引擎 之 SummIngMergeTree
  11. Deno 会取代 Node.js 吗?
  12. IP实时传输协议RTP/RTCP详解
  13. delphi formshow 刷新_OPPO K7x部分配置和外观公布90Hz刷新率11·4发布
  14. 算法题:Find the closest common ancestor
  15. 全开源!智能灯串开发资料全开源!为这个冬天装点烂漫“星空”
  16. 联想Y460 XP下独显叹号
  17. PayPal社交游戏及移动娱乐产业的海外商机
  18. 3G到5G,运营商的“失落十年”
  19. 新浪微博下拉菜单制作(DOM小练习)
  20. Android 绘制录音波浪 + 拓展: 让“字体”迎波而浪

热门文章

  1. Trinity进行转录组组装(2))
  2. 漂亮的蓝色风格网页设计作品欣赏(系列二)
  3. SVN checkout 之后图标(绿色勾之类的)没有显示出来的问题
  4. 2017美国计算机专业排名,2017年美国大学计算机专业排名TOP121
  5. 树莓派 安装Transmission并自动挂载移动硬盘
  6. 生鲜在B2C电商模式下存在问题,O2O模式解决生鲜电商物流配送难题
  7. instrument之Time Profiler总结
  8. vivo Y79的Usb调试模式在哪里,打开vivo Y79Usb调试模式的方法
  9. PHP点歌插件,此刻直播助手 弹幕点歌插件使用教程
  10. 关系型数据库第四章笔记---关系数据理论