网站中记录爬虫最简单直观的方法
每次做网站的时候都会想着如何记录爬虫,可网上现成的轮子并没有提供现成的给你用,不信你可以查查看。
那么没轮子怎么造轮子最快。
一种方法就是搜集现成的UA添加进数据库里,然后再调用,这种方法应当是第一个能想到的法子,那么他实际上并不实用。
因为爬虫的UA 和 IP 并不完全固定 或许又改了呢?
所以我想的一个法子就是
记录用户的信息
CREATE TABLE `hkcms_arecords` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `create_time` int(11) DEFAULT NULL COMMENT '创建时间', `update_time` int(11) DEFAULT NULL COMMENT '修改时间', `ip` varchar(255) DEFAULT NULL COMMENT 'ip', `ua` varchar(255) DEFAULT NULL COMMENT '浏览器UA', `iptype` varchar(255) DEFAULT NULL COMMENT 'ip类型', `access_address` varchar(255) DEFAULT NULL COMMENT '访问地址', `equipment_type` varchar(255) DEFAULT NULL COMMENT '设备类型', PRIMARY KEY (`id`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=6268 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
新增爬虫记录表
CREATE TABLE `hkcms_crawlerlog` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `ip` varchar(255) DEFAULT NULL COMMENT 'ip', `img` varchar(255) DEFAULT NULL COMMENT '爬虫图片', `ua` text COMMENT '爬虫UA', `status` enum('normal','hidden','reject','audit') DEFAULT 'normal', `crawler` varchar(255) DEFAULT NULL COMMENT '爬虫名称', `type` varchar(255) DEFAULT NULL COMMENT '记录类型', `create_time` int(11) DEFAULT NULL COMMENT '创建时间', `update_time` int(11) DEFAULT NULL COMMENT '修改时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=6248 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
当我们查看用户访问记录的时候 观察UA 毕竟知名的爬虫就那么几个
看到UA熟悉的 直接百度查一下 UA 具体属于哪只爬虫 我们添加进爬虫记录表即可
那么添加完后如何展示呢 ?
其中$data 为 用户访问记录
$crawlerArr = Crawlerlog::select(); foreach ($data as $k=>$v){ foreach ($crawlerArr as $c){ if($v[$c['type']] == $c[$c['type']]){ $data[$k]['name'] = $c['crawler']; // 例如百度爬虫 $data[$k]['imgs'] = $c['img']; } } if(!isset($data[$k]['name'])){ $data[$k]['name'] = '普通用户'; $data[$k]['imgs'] = '/static/creimg/img/user.png'; } }
本文链接:https://yun.ha.cn/post/53.html 转载需授权!