PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径


Posted in PHP onJune 30, 2014

我在服务器上有每天切割nginx日志的习惯,所以针对每天各大搜索引擎来访,总能记录一些404页面信息,传统上我只是偶尔分析下日志,但是对于很多日志信息的朋友,人工来筛选可能不是一件容易的事情,这不我个人自己慢慢研究了一点点,针对谷歌、百度、搜搜、360搜索、宜搜、搜狗、必应等搜索引擎的404访问生成为一个txt文本文件,直接上代码test.php。

<?php

//访问test.php?s=google

$domain='https://3water.com';

$spiders=array('baidu'=>'Baiduspider','360'=>'360Spider',

'google'=>'Googlebot','soso'=>'Sosospider','sogou'=>

'Sogou web spider','easou'=>'EasouSpider','bing'=>'bingbot');

 

$path='/home/nginx/logs/'.date('Y/m/').(date('d')-1).'/access_www.txt';

 

$s=$_GET['s'];

 

if(!array_key_exists($s,$spiders)) die();

$spider=$spiders[$s];

 

$file=$s.'_'.date('ym').(date('d')-1).'.txt';

if(!file_exists($file)){

    $in=file_get_contents($path);

    $pattern='/GET (.*) HTTP\/1.1" 404.*'.$spider.'/';

    preg_match_all ( $pattern , $in , $matches );

    $out='';

    foreach($matches[1] as $k=>$v){

        $out.=$domain.$v."\r\n";

    }

    file_put_contents($file,$out);

}

 

$url=$domain.'/silian/'.$file;

echo $url;

好就这样了。没有什么高深的技术,只有动手写的过程。

PHP 相关文章推荐
PHP对字符串的递增运算分析
Aug 08 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
php中对2个数组相加的函数
Jun 24 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
重新认识php array_merge函数
Aug 31 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
php常量详细解析
Oct 27 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 #PHP
PHP把小数转成整数3种方法
Jun 30 #PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 #PHP
php防止伪造的数据从URL提交方法
Jun 27 #PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 #PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 #PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 #PHP
You might like
php开发时容易忘记的一些技术细节
2016/02/03 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
javascript 面向对象实战思想分享
2017/09/07 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
详解Python编程中包的概念与管理
2015/10/16 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Android分包MultiDex策略详解
2017/10/30 Python
深入理解Django的中间件middleware
2018/03/14 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python程序输出无内容的解决方式
2020/04/09 Python
python3中sys.argv的实例用法
2020/04/24 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
寻找迷宫的一条出路,o通路;X:障碍
2016/07/10 面试题
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
大学生村官心得体会范文
2014/01/04 职场文书
幼儿园父亲节活动方案
2014/03/11 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
广播体操口号
2014/06/18 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS