Products
GG网络技术分享 2025-03-18 16:15 0
为了警告采集者,您可以考虑创建一个 WordPress 插件,来检测客户端访问网站时使用的 User-Agent 来判断是否是火车头采集软件在采集您的网站。如果是火车头采集软件,就可以输出您指定的内容(例如:"请勿采集")。
这是一个简单的例子,您可以使用这个作为参考来实现自己的插件:
<?php/**
* Plugin Name: TrainCrawler Blocker
* Description: Block TrainCrawler from accessing your site.
*/
function block_train_crawler() {
if (strpos($_SERVER['HTTP_USER_AGENT'], 'TrainCrawler') !== false) {
echo '请勿采集本网站';
exit;
}
}
add_action('init', 'block_train_crawler');
这些代码需要放在文件的开头, 头部信息是由三个 PHP 注释指令组成, 其中 “Plugin Name”是插件名称,“Description”是插件描述.
要使用上面的代码, 您需要做以下步骤:
traincrawler-blocker.php
或其他任何名称wp-content/plugins/
目录这样就可以在网站初始化时检测访问的 User-Agent 是否是火车头采集软件, 如果是的话就会输出 "请勿采集本网站" 并终止脚本执行.
请记住,上面的代码只是示例, 您可以根据自己的需要来修改它, 比如, 您可以使用更复杂的判断条件来确定是否是火车头采集软件, 或者, 您可以更换输出的信息来更好地警告采集者.
如果您使用了上面的代码但是没有正确地阻止火车头采集软件,这可能是因为火车头采集软件使用的 User-Agent 与代码中的判断条件不匹配。
可能是火车头采集软件的版本过新,已经更改了User-Agent的信息,或者是代码中的字符串 'TrainCrawler'
没有准确地匹配火车头采集软件的 User-Agent 。
您可以使用开发工具如chrome的开发者工具或者其他的方式来查看火车头采集软件的 User-Agent 是什么,并确保与代码中的判断条件相匹配。
另外,您可以使用更复杂的判断条件来确定是否是火车头采集软件。 比如说判断IP,某些采集软件常使用固定的IP来采集,这些IP可以通过观察或者黑名单的方式来判断。
如果火车头采集软件使用的 User-Agent 是 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" , 您可以修改上面我提供的代码来判断这个 User-Agent 。
可以更改上面的代码,把'TrainCrawler'
替换成 上面的UA。
如果您修改了 User-Agent 后仍然无法阻止火车头采集软件并且没有看到 "请勿采集本网站" 的提示,那么可能有以下几种情况:
对于火车头采集软件使用多种不同的 User-Agent 的情况,您可以修改插件来应对这种情况。
一种方法是,替换单一的 User-Agent 判断条件为一组判断条件。例如可以使用一个数组来存储火车头采集软件常用的 User-Agent, 然后使用循环结构来遍历这个数组并在每次循环中进行比较。
下面是一个简单的例子:
function block_train_crawler() {$traincrawler_uas = array(
'TrainCrawler',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)',
'Another TrainCrawler UA'
);
foreach ($traincrawler_uas as $ua) {
if (strpos($_SERVER['HTTP_USER_AGENT'], $ua) !== false) {
echo '请勿采集本网站';
exit;
}
}
}
add_action('init', 'block_train_crawler');
这个示例中,我们把 'TrainCrawler' 和 一个新的 User-Agent 添加到了 $traincrawler_uas 数组里。在代码执行之后,如果任意一种 User-Agent 与访问者的 User-Agent 匹配,程序就会输出 “请勿采集本网站” 并终止脚本执行。
火车头采集软件可能使用的 User-Agent 数量是不可知的,因为可能有很多种火车头采集软件或者不同版本的火车头采集软件。每一种都可能使用不同的 User-Agent,所以不能保证你插件能检测到所有类型的火车头采集软件。
关于要应用所有User-Agent,你可以尝试做一下几点:
在不影响正常用户访问网站的情况下完全阻止火车头使用任何 User-Agent 采集是不可能的。
火车头采集软件可以使用伪装身份来绕过防护机制,并使用多种 User-Agent 来绕过限制。所以,如果你想要完全阻止火车头采集软件,那么必须对正常用户的访问产生影响。
另外防护机制也可能会被火车头采集软件绕过,通过代理、IP隐藏等手段来继续采集。
所以建议的做法是使用验证码或者加密机制来防止采集。
综上所述,阻止火车头采集软件的能力非常有限,更好的方法是使用验证码或者防护机制来阻止采集, 同时还要注意法律。
再次强调,这样做只能是辅助手段,并不能百分之百避免采集,还是不能代替有效的内容保护措施,如使用 robots.txt,但是也不能做有害于其他人的事,同时还请注意不要违反法律。Demand feedback