第一部分:识别爬虫IP,给爬虫设置障碍;
一、从发现爬虫IP角度:
- 设置页面隐藏链接:
- 正常用户不会点击,因为看不到
- 爬虫会爬到,这个时候后台对爬虫IP进行记录,封禁
- 设置特殊cookie, 通过set-cookie 设置特殊cookie
- 正常客户端会在request上带上
- 爬虫一般不会
- 利用访问日志识别扫描器的IP
1. 人的访问频率低,且不同URL之间间隔时间随机
2. 机器爬虫的访问频率均匀,即不同URL之间访问间隔时间方差小
二、从设置爬虫陷阱来防御
- 设置大文件陷阱,消耗爬虫网络IO。
<?php
$max = 4000000000;
for($i = 0; $i < $max; i++){
echo "JustForYou";
}
//10Byte*4000000000=4MB
?>
- 设置大量无效URL,恶意填充爬虫的爬行队列
<?php
function get_rand_string($len){
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
for ($i =0; $str = '', $lc=strlen($chars) -1; $i < $len; $i++){
$str .= $chars[rand(0, $lc)];
}
return $str;
}
$max = 5000;
for ($i=0; $i<$max; $i++){
echo "<a href=\"".get_rand_string(6)."\".html> JustforYou</a>";
}
?>