apache日志以及限制爬虫访问

使用正则表达式分隔Apache日志文件

通用日志格式的Apache日志文件示例:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

组合日志格式的Apache日志文件示例:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"

组合格式的日志文件比通用格式的日志文件多了两条请求头中包含的信息,其他部分完全一样,以组合格式的日志文件为例,日志中的每项代表的含义如下(详细信息参见Apache文档):

  1. 客户端的IP地址。
  2. 由客户端identd进程判断的RFC1413身份(identity),输出中的符号"-"表示此处的信息无效。
  3. HTTP认证系统得到的访问该网页的客户标识(userid),如果网页没有设置密码保护,则此项将是"-"。
  4. 服务器完成请求处理时的时间。
  5. 客户的动作\请求的资源\使用的协议。
  6. 服务器返回给客户端的状态码。
  7. 返回给客户端的不包括响应头的字节数.如果没有信息返回,则此项应该是"-"。
  8. "Referer"请求头。
  9. "User-Agent"请求头。
 
 
<Directory "D:/Program Files/Apache Software Foundation/Apache2.2/htdocs">
Options Indexes FollowSymLinks
    AllowOverride All
 
    Order allow,deny
    Allow from all
   
    ## SetEnvIfNoCase User-Agent "^(Baiduspider|Sosospider)" not_allowed_spider 
    SetEnvIfNoCase User-Agent "Trident" not_allowed_spider
    Deny from env=not_allowed_spider
</Directory> 

2.使用.htaccess屏蔽User-Agent
在.htaccess里添加

RewriteCond %{HTTP_USER_AGENT} ".*ZmEu.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*Made by ZmEu.*" [OR]
RewriteCond %{HTTP_USER_AGENT} ".*whitehat.*" [OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla/4.0$"
RewriteRule ^(.*)$ http://blog.slogra.com/

如果你觉得有用,添加rewrite规则前,不妨先分析一下自己的网站日志,根据自己的需要定制.

推荐使用Firefox+User Agent Switcher测试效果.

举例
如果要按请求头中的”User-Agent:”重写一个站点的主页,可以这样写:
RewriteCond % { HTTP_USER_AGENT }  ^Mozilla.* RewriteRule ^/$ /homepage. max .html  [ L ]
 
RewriteCond % { HTTP_USER_AGENT }  ^Lynx.* RewriteRule ^/$ /homepage. min .html  [ L ]
 
RewriteRule ^/$ /homepage .std.html  [ L ]
解释:
如果你使用的浏览器识别标志是’Mozilla’,则你将得到内容最大化的主页(含有Frames等等)。
如果你使用的是(基于终端的)Lynx, 则你得到的是内容最小化的主页(不含table等等)。
如果上述条件都不满足(使用的是其他浏览器),则你得到的是一个标准的主页。

http://www.2cto.com/os/201201/116040.html

httpd.config说明

http://www.cnblogs.com/mxw09/archive/2011/08/26/2154240.html

相关推荐