基于Python实现WEB日志生成 | 您所在的位置:网站首页 › 怎么导出文献出处 › 基于Python实现WEB日志生成 |
文章目录
基于Python实现WEB日志生成1.日志作用2.常见的web服务器日志介绍2.1Apache2.2Ngnix
3.基于python实现日志生成3.1加载依赖3.2定义随机生成的日志信息随机生成 IP地址随机生成 访问资源路径随机生成 状态码随机生成 来源地址随机生成 浏览器信息
3.3生成log数据
总结参考文献
基于Python实现WEB日志生成
1.日志作用
记录访问服务器的远程主机IP地址,可以得知浏览者来自何处 记录浏览者访问web资源,可以了解网站哪些部分最受欢迎 记录浏览者使用浏览器,可以根据大多数浏览者使用浏览器对站点进行优化 记录浏览者访问时间 2.常见的web服务器日志介绍 2.1Apache1.简介 Apache(音译为阿帕奇)是世界使用最多的Web服务器软件之一。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。Apache是用C语言开发的基于模块化设计的web应用,核心代码不多。多数功能分散在各个模块中 2.日志位置 Apache的配置文件(httpd.conf)中是存在着两个可调配的日志文件的,这两个日志文件分别是访问日志access_log(在Windows上是access.log)和错误日志error_log(在Windows上是error.log)。如果使用 SSL 服务的话,还可能存在 ssl_access_log和ssl_error_log 和 ssl_request_log 三种日志文件。日志文件的路径根据安装方式不同位置也是不一样的,一般都是在Apache安装目录的logs子目录中 默认安装的情况下,Apache的配置文件是在: windows: C:\Program Files\Apache Software Foundation\Apache2.4\conf\httpd.conf linux: etc/httpd/conf/httpd.conf 3.Apache访问日志格式详解 访问日志access_log记录了所有对Web服务器的访问活动,下面是访问日志access_log中的一个标准记录 192.168.115.5 - - [01/Apr/2018:10:37:19 +0800] “GET / HTTP/1.1” 200 45 日志字段所代表的内容如下: 1.远程主机IP:表明访问网站的是谁 2.空白(E-mail):为了避免用户的邮箱被垃圾邮件骚扰,第二项就用“-”取代了 3.空白(登录名):用于记录浏览者进行身份验证时提供的名字。 4.请求时间:用方括号包围,而且采用“公用日志格式”或者“标准英文格式”。 时间信息最后的“+0800”表示服务器所处时区位于UTC之后的8小时。 5.方法+资源+协议:服务器收到的是一个什么样的请求。该项信息的典型格式是“METHOD RESOURCE PROTOCOL”,即“方法 资源 协议”。 METHOD: GET、POST、HEAD、…… RESOURCE: /、index.html、/default/index.php、……(请求的文件) PROTOCOL: HTTP+版本号 6.状态代码:请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的请求,一切正常。 7.发送字节数:表示发送给客户端的总字节数。它告诉我们传输是否被打断(该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务器在一天、一周或者一月内发送了多少数据。 2.2Ngnix1.简介 Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 2.日志位置 Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,一般在nginx的配置文件中日记配置(/usr/local/nginx/conf/nginx.conf)。 查找Nginx.conf的位置: 执行 sudo nginx -t 就可以获取配置文件的路径。同时如果你的配置文件nginx.conf修改后有错,该命令执行后也会有相应提示,例如“参数无效” Nginx日志路径 /var/log/nginx 3.ngnix日志格式设置 nginx的log_format有很多可选的参数用于指示服务器的活动状态,默认的是: log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';想要记录更详细的信息需要自己设置log_format,具体可设置的参数格式及说明如下: Nginx日志格式设置,参考https://blog.51cto.com/shaoniana/2126541 本案例为基于python语言实现web访问日志的加载,打开jupyter,新建 日志生成.ipynb进行代码编写。 3.1加载依赖 import random import time import shutil import os os.chdir("./") #切换工作路径为当前目录 3.2定义随机生成的日志信息 随机生成 IP地址 ip_slices = [132, 156, 124, 10, 29, 167, 143, 187, 30, 100] def sample_ip(): slice = random.sample(ip_slices, 4) return ".".join([str(item) for item in slice]) 随机生成 访问资源路径 url_paths = [ "www/2", "www/1", "www/6", "www/4", "www/3", "pianhua/130", "toukouxu/821" ] def sample_url(): return random.sample(url_paths, 1)[0] 随机生成 状态码 status_code = [404, 302, 200] def sample_status(): return random.sample(status_code, 1)[0] 随机生成 来源地址 http_referers = [ "https://www.baidu.com/s?wd={query}", "https://www.sogou.com/web?qu={query}", "http://cn.bing.com/search?q={query}", "https://www.so.com/s?q={query}" ] search_keyword = [ "我的祖国", "西游降魔篇", "阿甘正传", "扬名立万", "杨恩泽" ] def sample_referer(): if random.uniform(0, 1) > 0.2: return "-" refer_str = random.sample(http_referers, 1) # print refer_str[0] query_str = random.sample(search_keyword, 1) # print query_str[0] return refer_str[0].format(query=query_str[0]) 随机生成 浏览器信息生成userAgent数据: 创建日志文件userAgentcopy文件,notepad++打开该文件,将以下useragent信息粘贴到userAgentcopy中 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1" "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6" "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3" "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3" "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3" "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24" "Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 " "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101" "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11" "Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10" "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"将userAgentcopy上传到jupyter中日志生成文件所在的同级目录下。 本文主要介绍常见的web服务器与web日志的格式,并基于python实现了随机日志生成。在实现过程中,主要解决了userAgent的随机生成,本地时间的动态生成。 参考文献https://blog.51cto.com/shaoniana/2126541 https://blog.csdn.net/qq_41861558/article/details/105252105 |
CopyRight 2018-2019 实验室设备网 版权所有 |