Php 如何阻止spyder/Nutch-2等爬虫访问特定页面?

Php 如何阻止spyder/Nutch-2等爬虫访问特定页面?,php,apache,.htaccess,web-crawler,nutch,Php,Apache,.htaccess,Web Crawler,Nutch,我有一个Windows客户端应用程序,它使用托管在共享商业Web服务器中的php页面 在这个php页面中,我返回一个加密的json。同样在这个页面中,我有一段代码来跟踪哪些IP正在访问这个php页面,我注意到有一个spyder/Nutch-2爬虫正在访问这个页面 我想知道一个爬虫怎么可能找到一个没有在任何搜索引擎中发布的页面。有没有办法阻止爬虫访问此特定页面 我应该使用.htaccess文件来配置它吗?您确实可以使用.htaccess。robots.txt是另一个选项,但一些爬虫程序会忽略这一点

我有一个Windows客户端应用程序,它使用托管在共享商业Web服务器中的php页面

在这个php页面中,我返回一个加密的json。同样在这个页面中,我有一段代码来跟踪哪些IP正在访问这个php页面,我注意到有一个spyder/Nutch-2爬虫正在访问这个页面

我想知道一个爬虫怎么可能找到一个没有在任何搜索引擎中发布的页面。有没有办法阻止爬虫访问此特定页面

我应该使用.htaccess文件来配置它吗?

您确实可以使用.htaccess。robots.txt是另一个选项,但一些爬虫程序会忽略这一点。 您还可以阻止特定的用户代理字符串。它们因爬虫而异

robots.txt:

User-agent: *
Disallow: /
本例告诉所有机器人远离网站: 您可以阻止特定目录

Disallow: /demo/
您确实可以使用.htaccess。robots.txt是另一个选项,但一些爬虫程序会忽略这一点。 您还可以阻止特定的用户代理字符串。它们因爬虫而异

robots.txt:

User-agent: *
Disallow: /
本例告诉所有机器人远离网站: 您可以阻止特定目录

Disallow: /demo/

您可以通过执行以下操作来禁止特定爬虫:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (spyder/Nutch-2) [NC]
#For multi block
#RewriteCond %{HTTP_USER_AGENT} (spyder/Nutch-2|baidu|google|...) [NC]
RewriteRule .* - [R=403,L]
该爬虫可以更改代理名称,因此这可能不是解决方案。您需要通过查看需要的ip地址来阻止爬虫程序

Order Deny,Allow
Deny from x.x.x.x

但是,该机器人也可以更改其ip地址。这意味着您需要跟踪访问日志。并决定要阻止哪些代理并手动将它们添加到列表中

您可以通过执行以下操作来禁止特定爬虫

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (spyder/Nutch-2) [NC]
#For multi block
#RewriteCond %{HTTP_USER_AGENT} (spyder/Nutch-2|baidu|google|...) [NC]
RewriteRule .* - [R=403,L]
该爬虫可以更改代理名称,因此这可能不是解决方案。您需要通过查看需要的ip地址来阻止爬虫程序

Order Deny,Allow
Deny from x.x.x.x

但是,该机器人也可以更改其ip地址。这意味着您需要跟踪访问日志。并决定要阻止哪些代理并手动将其添加到列表中

您可以使用.htaccess文件禁止特定IP地址:

Order Deny,Allow
Deny from xxx.xx.xx.xx

其中xxx表示IP地址

您可以使用.htaccess文件禁止特定IP地址:

Order Deny,Allow
Deny from xxx.xx.xx.xx

其中xxx表示IP地址

关闭。最好使用一个文件。链接的页面介绍了为什么要设置一个,以及如何设置。总之:

它避免了在爬行器和机器人运行页面上的脚本时浪费服务器资源。 它可以节省带宽。 它可以消除Web状态中的混乱。 您可以对其进行微调,以仅排除某些机器人。
我应该提一个警告。有些爬行器被编码为忽略robots.txt文件,甚至会检查它以查看您不希望它们访问的内容。但是,合法来源的爬行器将遵守robots.txt指令。

关闭。最好使用一个文件。链接的页面介绍了为什么要设置一个,以及如何设置。总之:

它避免了在爬行器和机器人运行页面上的脚本时浪费服务器资源。 它可以节省带宽。 它可以消除Web状态中的混乱。 您可以对其进行微调,以仅排除某些机器人。
我应该提一个警告。有些爬行器被编码为忽略robots.txt文件,甚至会检查它以查看您不希望它们访问的内容。但是,来自合法来源的爬行器将遵守robots.txt指令。

您可以使用.htaccess,或者使用php代码。在php代码的顶部,简单地写下如下内容:

if(strpos($_SERVER['HTTP_USER_AGENT'],'spyder/Nutch-2') !== false) {
    die();
}
//rest of code here

您可以使用.htaccess,或者使用php代码。在php代码的顶部,简单地写下如下内容:

if(strpos($_SERVER['HTTP_USER_AGENT'],'spyder/Nutch-2') !== false) {
    die();
}
//rest of code here

只要禁止知识产权。可以在apache中完成,但iptables或防火墙则可以prefered@user574632-你将如何禁止爬行器访问需要使用iptables检查HTTP请求的特定URL?我认为他的意思是完全禁止它。你可以在.htaccess文件中阻止爬行器ip或基于名称的定义。但是,爬虫代理名称或ip地址可以随时更改。请参阅我的答案以了解更多详细信息,只需禁止IP即可。可以在apache中完成,但iptables或防火墙则可以prefered@user574632-你将如何禁止爬行器访问需要使用iptables检查HTTP请求的特定URL?我认为他的意思是完全禁止它。你可以在.htaccess文件中阻止爬行器ip或基于名称的定义。但是,爬虫代理名称或ip地址可以随时更改。请参阅我的回答,了解更多详细信息爬虫程序无法忽略.htaccess文件,我想你是在考虑robots.txt文件。是的,确实是我的错,我指的是robots.txt文件。爬虫程序无法忽略.htaccess文件,我想你是在考虑robots.txt文件。是的,确实是我的错,我指的是robots.txt文件。robots.txt不是解决方案。此文件不会以编程方式阻止特定爬虫。即使您在robots.txt文件中定义了bot名称,也要由特定的爬虫程序来cralw您的网站robots.txt i
这不是解决办法。此文件不会以编程方式阻止特定爬虫。即使您在robots.txt文件中定义了bot名称,也要由特定的爬虫程序来抓取您的网站,但是,爬虫程序仍然可以获取静态内容。因为,默认情况下apache直接服务于静态竞争。您还需要使用php来提供静态内容,以便让您的php代码检测到cralwer。OP只是说阻止返回json数组的单个php页面,而不是整个站点。但是,静态内容仍然可以通过爬虫获取。因为,默认情况下apache直接服务于静态竞争。为了让你的php代码检测到cralwer,你还需要使用php提供静态内容。OP只是说阻止一个返回json数组的php页面,而不是整个站点。是的,但是爬行器的名称和ip可以更改。在这种情况下,解决方案是什么?是的,但是爬行器的名称和ip可以更改。在这种情况下,解决方案是什么?