一、Nginx 规则
直接在 server 中新增如下规则即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
server
{
listen80;
server_name zhangge.net;
index index.htmlindex.htmindex.phpdefault.htmldefault.htmdefault.php;
root /home/wwwroot/zhangge.net;
#### 新增规则【开始】 ####
#初始化变量为空
set$deny_spider"";
#如果请求地址中含有需要禁止抓取关键词时,将变量设置为y:
if($request_uri ~*"\?replytocom=(\d+)|\?p=(\d+)|/feed|/date|/wp-admin|comment-page-(\d+)|/go"){
set$deny_spider'y';
}
#如果抓取的UA中含有spider或bot时,继续为变量赋值(通过累加赋值间接实现nginx的多重条件判断)
if($http_user_agent~*"spider|bot"){
set$deny_spider"${deny_spider}es";
}
#当满足以上2个条件时,则返回404,符合搜索引擎死链标准
if($deny_spider='yes'){
return403;#如果是删除已收录的,则可以返回404
break;
}
#### 新增规则【结束】 ####
#以下规则略...
|
Ps:就是将上述代码中“新增规则【开始】”到“新增规则【结束】”内容添加到我们网站的 Nginx 配置-- server 模块 中的 root 指令之后即可。
二、 Apache规则
Apache 测试了半天总是500错误,暂时先放弃了,有时间再来调整!
我自己测试写的规则如下,感兴趣的朋友可以自行测试看看,也许是我环境的问题。
|
RewriteEngineOn
RewriteCond%{HTTP_USER_AGENT}(^$|spider|bot)[NC]
RewriteCond%{REQUEST_URI}(/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+))[NC]
RewriteRule^(.*)$-[F]
|
Ps:大概思路和Nginx一致,既匹配了蜘蛛UA,又匹配了禁止关键词的抓取,直接返回403(如何返回404,有知道的朋友请留言告知下,测试成功的朋友也敬请分享一下代码,我实在没时间折腾了。)
三、PHP代码版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/**
* PHP比robots更彻底地禁止蜘蛛抓取指定路径代码 By 张戈博客
* 原文地址:http://zhangge.net/5043.html
* 申 明:原创代码,转载请注保留出处,谢谢合作!
* 使用说明:将一下代码添加到主题目录的functions.php当中即可。
*/
ob_start("Deny_Spider_Advanced");
functionDeny_Spider_Advanced(){
$UA=$_SERVER['HTTP_USER_AGENT'];
$Request_uri=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
$Spider_UA ='/(spider|bot|)/i';//定义需要禁止的蜘蛛UA,一般是spider和bot
//禁止蜘蛛抓取的路径,可以参考自己的robots内容,每个关键词用分隔符隔开,需注意特殊字符的转义
$Deny_path ='/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)/i';
//如果检测到UA为空,可能是采集行为
if(!$UA){
header("Content-type: text/html; charset=utf-8");
wp_die('请勿采集本站,因为采集的站长木有小JJ!');
}else{
//如果发现是蜘蛛,并且抓取路径匹配到了禁止抓取关键词则返回404
if(preg_match_all($Spider_UA,$UA)&&preg_match_all($Deny_path,$Request_uri)){
//header('HTTP/1.1 404 Not Found');
//header("status: 404 Not Found");
header('HTTP/1.1 403 Forbidden');//可选择返回404或者403(有朋友说内链404对SEO不太友好)
header("status: 403 Forbidden");
}
}
}
|
使用很简单,将上述PHP代码添加到主题目录下放 functions.php 当中即可。
四、测试效果
测试效果很简单,直接利用百度站长平台的抓取诊断工具即可:
点开看看可以发现真的是返回404:
最后,结合张戈博客之前分享的《SEO技巧:Shell脚本自动提交网站404死链到搜索引擎》即可将这些无用的收录全部删除:
有朋友说我这个是黑帽手法,用户可以访问,而搜索引擎却404,很适合淘宝客网站的商品外链。是什么手法我不清楚,我只知道实用就好!特别是张戈博 客那些外链,都是用/go?url=这个路径来跳转的,现在这样处理后,就算搜索引擎不遵循robots硬是要抓取,就只能抓到404了!
转自张戈的博客
分享到:
相关推荐
数据抓取是现代数据分析和信息收集的重要组成部分,而Gerapy、Scrapy、Scrapyd以及Nginx在数据抓取过程中扮演着关键角色。本文将详细介绍如何安装和配置这些工具,以便实现高效、集群化的爬虫管理。 首先,让我们从...
这通常可以从Web服务器(如Apache或Nginx)的配置中设置,或者从云服务提供商那里获取。日志文件通常以特定的格式(如 Combined Log Format 或 Common Log Format)保存,包含上述提到的各种信息。 分析日志时,...
在这个系统中,Django可能被用来创建API接口,接收和处理爬虫抓取的数据,以及构建前端展示页面。用户可以通过这些接口与系统交互,获取菜价信息。 4. **数据库管理**:Django自带ORM(Object-Relational Mapping)...
分布式爬虫则通过将任务分散到多个节点上,能够实现大规模网页抓取,提高数据采集的效率和稳定性。 首先,我们需要了解分布式爬虫的基本概念。分布式爬虫是将一个大型的爬虫任务拆分成多个小任务,分别在不同的计算...
通常,搭建PHP环境需要安装PHP解释器(如PHP-FPM)、Web服务器(如Apache或Nginx)以及可能的数据库服务(如MySQL)。此外,可能还会介绍如何配置这些组件来支持PHP程序的执行。 【标签】"爬虫 PHP 简单"明确了项目...
在本项目中,我们将探讨...总的来说,这个项目涵盖了爬虫抓取、数据存储、Web开发和数据可视化等多个环节,通过实践可以提升对Python爬虫、Django框架和前端开发的理解,同时也有助于掌握数据分析和可视化的基本技能。
用户需要熟悉基本的Linux命令行操作和Apache/Nginx等Web服务器的配置。 5. **使用Sphider学习爬虫** - **定制爬虫规则**:Sphider允许用户设置爬取深度、排除某些域名或URL模式,甚至可以自定义正则表达式来筛选感...
2. **多线程与并发处理**:Java提供了丰富的并发工具类,如`ExecutorService`、`ThreadPoolExecutor`和`Future`等,用于实现爬虫的多线程抓取,提高抓取效率。 3. **异步I/O**:Java NIO(非阻塞I/O)可以提高爬虫...
例如,使用Nginx或Apache的模块,或者PHP的RateLimiter类库。 6. **使用缓存**:对于静态内容,可以利用缓存技术如Redis或Memcached,将内容存储在内存中,减少数据库查询,减轻服务器压力。 7. **内容协商**:...
在PHP中实现伪静态,通常通过URL重写技术,如Apache的mod_rewrite模块或Nginx的rewrite规则,将动态请求映射到对应的PHP脚本上。开发者可能在.htaccess文件中配置了重写规则,或者在PHP代码中实现了URL解析逻辑。伪...
在PHP中,实现伪静态通常通过重写URL规则,如使用Apache的mod_rewrite模块或Nginx的rewrite规则。 【高速缓存】为了提高网站性能,本项目采用了缓存策略。在PHP中,常见的缓存技术有文件缓存、内存缓存(如APC、...
文件提到安装MySQL数据库(版本5.5或5.6),通过LNMP(Linux, Nginx, MySQL, PHP)或LAMP(Linux, Apache, MySQL, PHP)环境简化安装和维护。创建数据库和用户,执行SQL脚本初始化数据库结构,并导入初始种子用户...
网络爬虫,也被称为网页抓取或Web scraping,是一种自动化技术,用于从互联网上收集大量数据。在这个项目中,我们将专注于使用Python编程语言编写网络爬虫来爬取搜狐新闻,并将获取的数据展示在网页上。这涉及到几个...
总结来说,“高并发前端数据采集器.zip”涉及到的技术点涵盖了数据采集、处理、前端展示等多个层面,具体实现可能基于Node.js构建的服务器、各种数据抓取和处理工具,以及现代前端框架和数据可视化库。实现高并发的...
实现伪静态通常包括重写URL规则,这可以通过诸如Apache的mod_rewrite模块或Nginx的rewrite指令来完成。 压缩包内的“使用须知.txt”文件可能包含了项目安装、配置和运行的指南,这对于开发者来说是至关重要的。它...
6. 自动化爬虫程序,定期抓取和更新互联网上的网址信息。 综上所述,"laCNN联盟自动收录导航.rar"是一个包含源代码的网址导航系统,用户在部署时需要对配置文件进行适当修改,并且该系统涉及到多种IT技术,包括Web...
1. 数据收集:PHP蜘蛛统计小程序通过分析服务器日志文件(如Apache或Nginx的日志)来获取访问信息。当搜索引擎爬虫访问网站时,其请求会被记录在日志中,包括爬虫的IP地址、访问时间、请求的URL以及HTTP状态码等。 ...
9. **部署与运行**:项目最终需要部署到服务器上,可能使用了Apache或Nginx等Web服务器,以及Gunicorn或uWSGI等WSGI服务器来运行Django应用。 10. **Django REST Framework**:为了提供API接口,项目可能使用了...
在PHP中,这通常通过重写URL(使用Apache的mod_rewrite模块或Nginx的rewrite规则)来实现,使得动态URL看起来像静态的HTML文件,提高用户体验和SEO效果。 最后,我们提到了“高速缓存”。在Web开发中,缓存能够显著...