1. 程式人生 > >今晚九點|如何使用 Python 分析 web 訪問日誌?

今晚九點|如何使用 Python 分析 web 訪問日誌?

python 日誌

主題:如何使用 Python 分析 Web 訪問日誌

內容

  • Python 基礎

    • 字符串、字典、文件、時間

    • Web 訪問日誌
  • 實戰

  • 提問

主講師:KK

多語言混搭工程師,熱愛開源技術,喜歡GET新技能,5年 PHP、Python 項目開發經驗,帶領團隊完成多個中、小型項目開發,對安全、雲等多個領域富有濃厚興趣,擅長於 WEB 安全開發、性能優化、分布式應用開發&設計等多方面,做事認真負責,樂於分享技能,現任 51Reboot.com Python 實戰班講師

技術分享圖片

任何語言都有使用場景,只有合適和不合適,沒有好壞。語言是工具,用來描述讓計算機如何工作,想法(思路&算法)是基礎,也是重點。

字符串

像姓名、一句話描述這樣的文

使用單引號、雙引號、三個單引號或三個雙引號引起來的一些字符
技術分享圖片

字符串有哪些函數

技術分享圖片

  • split分隔字符串為list

技術分享圖片

  • format 格式化字符串

技術分享圖片

字典定義

  • 定義
    技術分享圖片

    • 使用大括號包含

    • 每個元素為key:value的格式

    • 元素之間使用逗號分隔

練習

一、統計 list 中每個元素出現的次數

languages = [‘python‘, ‘java‘, ‘python‘, ‘c‘, ‘c++‘, ‘go‘, ‘c#‘, ‘c++‘, ‘lisp‘, ‘c‘, ‘javascript‘, ‘java‘, ‘python‘, ‘matlab‘, ‘python‘, ‘go‘, ‘java‘]

提示:

統計結果為 element:count 的形式,統計結果采用 dict 從左到右依次遍歷 list 中元素,判斷是否在 dict 中,如果不在則將 element 存入 dict 並設置 count 為 1,否則將 dict中element 對應的 count 加 1 後再存儲到dict中。
技術分享圖片

二、統計文章中每個英文字母出現的次數

  • article = ‘I was not delivered unto this world in defeat, nor does failure course in my veins. I am not a sheep waiting to be prodded by my shepherd. I am a lion and I refuse to talk, to walk, to sleep with the sheep. I will hear not those who weep and complain, for their disease is contagious. Let them join the sheep. The slaughterhouse of failure is not my destiny.‘

  • 提示:判斷是否為英文單詞

  • if (element > ‘a’ and element < ‘z’) or (element > ‘A’ and element < ‘Z’)

技術分享圖片

字典的 Key

  • Key 必須為不可變數據類型

  • 數字

  • 整數

  • 浮點數

  • 字符串

  • 布爾類型

  • 列表 X

  • 元組

  • 子元素必須也不可變(“a”, “b”)

  • ("a", ["b“]) X

  • 字典 X

字典有哪些函數

技術分享圖片

文件

  • 自己在電腦上打開 word 文件的操作順序

  • 在計算機盤符中找到對應的文件

  • 鼠標雙擊打開文件(選擇查閱的工具)

  • 查閱文件內容/編輯文件內容

  • 如果有編輯文件內容保存文件

  • 關閉文件

文件操作

  • 打開文件
  • fhandler = open(path, mode, …)
  • path 為文件路徑
  • mode 為打開文件方式及文件類型
mode 打開文件方式
r 讀(默認)
w
x 創建並寫
a 追加
r+ 讀寫
w+ 寫讀
x+ 創建並寫讀
a+ 追加讀
  • 關閉文件
    fhandler.close()
mode 文件類型
t 文本(默認)
b 二進制
  • 遍歷文件內容
    技術分享圖片

時間

技術分享圖片

Web 訪問日誌

  • Web 訪問日誌是 Web 服務器記錄的網站被訪問的過程日誌

  • 日誌屬性

    • 什麽時候

    • 什麽人

    • 通過什麽工具

    • 以什麽方式

    • 訪問了什麽資源
    • 結果是什麽(狀態/返回數據大小)

Web 訪問日誌日誌格式

  • 通用日誌格式

127.0.0.1 - - [14/May/2017:12:45:29 +0800] "GET /index.html HTTP/1.1" 200 4286

遠程 - - 主機 IP 請求時間 時區 方法 資源 協議 狀態碼 發送字節

  • 組合日誌格式

127.0.0.1 - - [14/May/2017:12:51:13 +0800] "GET /index.html HTTP/1.1" 200 4286 "http://127.0.0.1/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36“

遠程主機 IP - - 請求時間 時區 方法 資源 協議 狀態碼 發送字節 referer 字符 瀏覽器信息

Web訪問日誌日誌示例

技術分享圖片

實戰

  • 統計以下數據

    • 需要根據IP獲取地理位置

    • 每天的日誌中每行流量之和、總的流量之和(每天流量之和)

    • 每種狀態碼出現的次數

    • 每天的不重復的IP的數量、總的不重復的IP數量(每天不重復的IP數量 之和???)

    • 每天的日誌行數、日誌的總行數(每天的日誌行數之和)

    • 統計每天的點擊量、總點擊數量

    • 統計每天的瀏覽者數量、總瀏覽者數量

    • 統計總狀態碼分布

    • 統計每天流量大小、總的流量大小

    • 統計訪問地域分布及訪問次數 TOP20

運行

技術分享圖片

分析

  • 按天統計

    • 每天日誌行數

    • 每天瀏覽每個 IP 的訪問次數

    • 每天訪問者數量 = 每天出現 IP 組成集合的數量

    • 每天狀態碼出現次數

    • 每天流量總數
  • 總統計

    • 總日誌行數 = 每天日誌行數之和

    • 總訪問者數量 = 所有出現 IP 組成的集合數量
  • 地域分布

    • 所有出現 IP 的訪問次數 排序取 TOP20

    • 根據 IP 查找地理位置

代碼

統計每天信息
技術分享圖片

統計總數據

技術分享圖片

統計區域數據
技術分享圖片

打印結果

技術分享圖片

還可以做哪些?

  • 統計每天每個 url 訪問的次數?

  • 最近 24 小時訪問/流量趨勢圖(每 5-10 分鐘粒度)

  • 每天瀏覽器分布圖

  • 每天訪問文檔分布圖

  • 每天 js、css、圖片等靜態文檔流量統計

  • ……

  • web 餅狀圖、曲線圖、柱狀圖、地圖

  • ……

  • 通過機器學習監督學習方法對訪問進行攻擊檢測

網絡直播分享
報名方式:加小助手(小月)微信:1902433859 備註公開課進入直播分享群

今晚九點|如何使用 Python 分析 web 訪問日誌?