全部產品
Search
文件中心

Simple Log Service:解析函數

更新時間:Jul 19, 2024

本文介紹User-Agent解析函數的文法規則,包括參數解釋、函數樣本等。

函數列表

函數

說明

ua_parse_device

解析User-Agent中的裝置資訊。

ua_parse_os

解析User-Agent中的作業系統資訊。

ua_parse_agent

解析User-Agent中的瀏覽器資訊。

ua_parse_all

解析User-Agent中所有資訊。

url_parse

解析URL的組成部分。

url_parse_qs

解析URL中查詢字串包含的參數。

說明

User-Agent解析函數會剔除解析結果為None的欄位,例如解析的裝置資料為{'brand': None, 'family': 'Other', 'model': None},則brand欄位和model欄位將被剔除,最終的解析結果為{'family': 'Other'}

ua_parse_device

解析User-Agent中的裝置資訊。

  • 函數格式

    ua_parse_device(value)
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    value

    String

    待解析的User-Agent字串。

  • 返回結果

    返回JSON類型的資料集。

  • 函數樣本

    • 原始日誌

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
    • 加工規則

      e_set("new_column",ua_parse_device(v("http_user_agent")))
    • 加工結果

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
      new_column:{"family":"Mac","brand":"Apple","model":"Mac"}

ua_parse_os

解析User-Agent中的作業系統資訊。

  • 函數格式

    ua_parse_os(value)
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    value

    String

    待解析的User-Agent字串。

  • 返回結果

    返回JSON類型的資料集。

  • 函數樣本

    • 原始日誌

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
    • 加工規則

      e_set("new_column",ua_parse_os(v("http_user_agent")))
    • 加工結果

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
      new_column:{'family': 'Mac OS X',
                          'major': '10',
                          'minor': '9',
                          'patch': '4'}

ua_parse_agent

解析User-Agent中的瀏覽器資訊。

  • 函數格式

    ua_parse_agent(value)
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    value

    String

    待解析的User-Agent字串。

  • 返回結果

    返回JSON類型的資料集。

  • 函數樣本

    • 原始日誌

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
    • 加工規則

      e_set("new_column",ua_parse_agent(v("http_user_agent")))
    • 加工結果

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
      new_column:{'family': 'Chrome', 'major': '192', 'minor': '168', 'patch': '0'}

ua_parse_all

提取User-Agent中的所有資訊。

  • 函數格式

    ua_parse_all(value)
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    value

    String

    待解析的User-Agent字串。

  • 返回結果

    返回JSON類型的資料集。

  • 函數樣本

    • 原始日誌

      http_user_agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
    • 加工規則

      e_set("new_column",ua_parse_all(v("http_user_agent")))
    • 加工結果

      http_user_agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/192.168.0.0 Safari/537.36
      new_column: {
        "user_agent": {
          "family": "Chrome",
          "major": "192",
          "minor": "168",
          "patch": "0"
        },
        "os": {
          "family": "Mac OS X",
          "major": "10",
          "minor": "9",
          "patch": "4"
        },
        "device": {
          "family": "Mac",
          "brand": "Apple",
          "model": "Mac"
        }
      }

url_parse

解析URL的組成部分。

  • 函數格式

    url_parse(url, scheme="", allow_fragments=True)
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    value

    String

    待解析的URL。

    scheme

    String

    網路通訊協定,預設為空白字元。

    僅在URL中未指定網路通訊協定時,返回結果中的scheme欄位才會使用此處設定的值。

    allow_fragments

    Boolean

    是否解析URL中的fragment部分。

    • True(預設值):解析URL中的fragment部分,返回結果中的fragment欄位為具體值。

    • False:不解析URL中的fragment部分,返回結果中的fragment欄位為空白字串。

  • 返回結果

    返回解析後的JSON資料,具體參數說明如下表所示。

    欄位

    說明

    scheme

    網路通訊協定

    netloc

    網路位置

    path

    分層路徑標識

    query

    查詢組件

    fragment

    片段標識符

  • 函數樣本

    • 樣本1:使用預設參數,返回URL的各個組成部分。

      • 原始日誌

        content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
      • 加工規則

        e_set("url",url_parse(v("content")))
      • 加工結果

        content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
        url:{
                "scheme": "https",
                "netloc": "username:username@example.com:8083",
                "path": "/hello/asdah/;type=docx",
                "query": "filename=python3.docx",
                "fragment": "urllib"
            }
    • 樣本2:設定allow_fragments為False,返回結果中的fragment參數值為空白。

      • 原始日誌

        content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
      • 加工規則

        e_set("url",url_parse(v("content"),allow_fragments=False))
      • 加工結果

        content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
        url:{
                 "scheme": "https",
                "netloc": "username:username@example.com:8083",
                "path": "/hello/asdah/;type=docx",
                "query": "filename=python3.docx",
                "fragment": ""
            }
    • 樣本3:設定scheme為https,allow_fragments為False,返回結果中scheme參數值為https,fragment參數值為空白。

      • 原始日誌

        content://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
      • 加工規則

        e_set("url",url_parse(v("content"),scheme="https", allow_fragments=False))
      • 加工結果

        content://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
        url:{
               "scheme": "https",
                "netloc": "username:username@example.com:8083",
                "path": "/hello/asdah/;type=docx",
                "query": "filename=python3.docx",
                "fragment": ""
            }

url_parse_qs

解析URL中查詢字串的組成部分。

  • 函數格式

    url_parse_qs(
        url_qs,
        keep_blank_values=False,
        strict_parsing=False,
        encoding="utf-8",
        errors="replace",
        ignore_multi_fields=True,
    )
  • 參數說明

    參數名稱

    資料類型

    是否必填

    說明

    url_qs

    String

    待解析的URL查詢字串。

    keep_blank_values

    Boolean

    是否傳回值為空白的參數。

    • False(預設值):不返回。

    • True:返回,且將空值處理為空白字串。

    strict_parsing

    Boolean

    是否處理解析錯誤。

    • True:解析報錯會引發ValueError異常。

    • False(預設值):忽略錯誤。

    encoding

    String

    指定編碼方式,將含有百分比符號(%)的逸出字元解析為Unicode字元,預設為utf-8。支援ASCII。

    errors

    String

    按照編碼方式無法識別字元時的處理方案。取值包括:

    • ignore:直接忽略。

    • strict:直接報錯,丟棄此條日誌資料。

    • replace(預設值):使用半形問號(?)替換無法識別部分。

    • xmlcharrefreplace:使用對應XML字元替換無法識別部分。

    ignore_multi_fields

    Num

    指定單個返回參數的值的個數。

    • True(預設值):每個參數只返回第一個值, 類型為String。

    • False:每個參數都返回所有值,類型為List。

  • 返回結果

    返回解析後的JSON資料,具體參數如下表所示。

    參數

    說明

    logType

    日誌類型

    uid

    日誌的唯一標識

    time

    日誌的時間

    msg

    日誌中的資訊

  • 函數樣本

    • 樣本1:設定keep_blank_values為True,返回結果中包含值為空白的參數。

      • 原始日誌

        content:logType=net_wheel_log&uid=62452****&vid=6.1.0_gf_pc&asb=1206427&git=&time=22-11-3+%e4%b8%8a11%e6%97%b649%e5%88%8633%e7%a7%92&operatingSystem=Windows+10++(10.0.0)+64bit&deviceModel=System+Product+Name+(System+manufacturer)&graphicsDeviceName=NVIDIA+GeForce+GTX+1650&graphicsDeviceType=Direct3D11&graphicsDeviceVendor=NVIDIA&graphicsDeviceVersion=Direct3D+11.0+%5blevel+11.1%5d&graphicsMemorySize=3962&systemMemorySize=8127&processorCount=6&processorFrequency=3000&processorType=Intel(R)+Core(TM)+i5-9500F+CPU+%40+3.00GHz&deviceID=96da5902a042a5f84118995f88373f73650e76be166589726****&guessUID=62452****&networkReachability=wifi&msg=GetAuthkeyRsp
      • 加工規則

        e_set("url",url_parse_qs(v("content"), keep_blank_values=True))
      • 加工結果

        content:logType=net_wheel_log&uid=62452****&vid=6.1.0_gf_pc&asb=1206427&git=&time=22-11-3+%e4%b8%8a11%e6%97%b649%e5%88%8633%e7%a7%92&operatingSystem=Windows+10++(10.0.0)+64bit&deviceModel=System+Product+Name+(System+manufacturer)&graphicsDeviceName=NVIDIA+GeForce+GTX+1650&graphicsDeviceType=Direct3D11&graphicsDeviceVendor=NVIDIA&graphicsDeviceVersion=Direct3D+11.0+%5blevel+11.1%5d&graphicsMemorySize=3962&systemMemorySize=8127&processorCount=6&processorFrequency=3000&processorType=Intel(R)+Core(TM)+i5-9500F+CPU+%40+3.00GHz&deviceID=96da5902a042a5f84118995f88373f73650e76be166589726****&guessUID=62452****&networkReachability=wifi&msg=GetAuthkeyRsp
        url:{
                "logType": "net_wheel_log",
                "uid": "62452****",
                "vid": "6.1.0_gf_pc",
                "asb": "1206427",
                "git": "",
                "time": "22-11-3 上11時49分33秒",
                "operatingSystem": "Windows 10  (10.0.0) 64bit",
                "deviceModel": "System Product Name (System manufacturer)",
                "graphicsDeviceName": "NVIDIA GeForce GTX 1650",
                "graphicsDeviceType": "Direct3D11",
                "graphicsDeviceVendor": "NVIDIA",
                "graphicsDeviceVersion": "Direct3D 11.0 [level 11.1]",
                "graphicsMemorySize": "3962",
                "systemMemorySize": "8127",
                "processorCount": "6",
                "processorFrequency": "3000",
                "processorType": "Intel(R) Core(TM) i5-9500F CPU @ 3.00GHz",
                "deviceID": "96da5902a042a5f84118995f88373f73650e76be166589726****",
                "guessUID": "62452****",
                "networkReachability": "wifi",
                "msg": "GetAuthkeyRsp"
            }
    • 樣本2:設定keep_blank_values為預設值(False),返回結果無值為空白的參數。

      • 原始日誌

        content:logType=net_wheel_log&uid=62452****&vid=6.1.0_gf_pc&asb=1206427&git=&time=22-11-3+%e4%b8%8a11%e6%97%b649%e5%88%8633%e7%a7%92&operatingSystem=Windows+10++(10.0.0)+64bit&deviceModel=System+Product+Name+(System+manufacturer)&graphicsDeviceName=NVIDIA+GeForce+GTX+1650&graphicsDeviceType=Direct3D11&graphicsDeviceVendor=NVIDIA&graphicsDeviceVersion=Direct3D+11.0+%5blevel+11.1%5d&graphicsMemorySize=3962&systemMemorySize=8127&processorCount=6&processorFrequency=3000&processorType=Intel(R)+Core(TM)+i5-9500F+CPU+%40+3.00GHz&deviceID=96da5902a042a5f84118995f88373f73650e76be166589726****&guessUID=62452****&networkReachability=wifi&msg=GetAuthkeyRsp
      • 加工規則

        e_set("url",url_parse_qs(v("content")))
      • 加工結果

        content:logType=net_wheel_log&uid=62452****&vid=6.1.0_gf_pc&asb=1206427&git=&time=22-11-3+%e4%b8%8a11%e6%97%b649%e5%88%8633%e7%a7%92&operatingSystem=Windows+10++(10.0.0)+64bit&deviceModel=System+Product+Name+(System+manufacturer)&graphicsDeviceName=NVIDIA+GeForce+GTX+1650&graphicsDeviceType=Direct3D11&graphicsDeviceVendor=NVIDIA&graphicsDeviceVersion=Direct3D+11.0+%5blevel+11.1%5d&graphicsMemorySize=3962&systemMemorySize=8127&processorCount=6&processorFrequency=3000&processorType=Intel(R)+Core(TM)+i5-9500F+CPU+%40+3.00GHz&deviceID=96da5902a042a5f84118995f88373f73650e76be166589726****&guessUID=62452****&networkReachability=wifi&msg=GetAuthkeyRsp
        url:{
                "logType": "net_wheel_log",
                "uid": "62452****",
                "vid": "6.1.0_gf_pc",
                "asb": "1206427",
                "time": "22-11-3 上11時49分33秒",
                "operatingSystem": "Windows 10  (10.0.0) 64bit",
                "deviceModel": "System Product Name (System manufacturer)",
                "graphicsDeviceName": "NVIDIA GeForce GTX 1650",
                "graphicsDeviceType": "Direct3D11",
                "graphicsDeviceVendor": "NVIDIA",
                "graphicsDeviceVersion": "Direct3D 11.0 [level 11.1]",
                "graphicsMemorySize": "3962",
                "systemMemorySize": "8127",
                "processorCount": "6",
                "processorFrequency": "3000",
                "processorType": "Intel(R) Core(TM) i5-9500F CPU @ 3.00GHz",
                "deviceID": "96da5902a042a5f84118995f88373f73650e76be166589726****",
                "guessUID": "62452****",
                "networkReachability": "wifi",
                "msg": "GetAuthkeyRsp"
            }
    • 樣本3:設定ignore_multi_fields為預設值(True),每個參數只返回第一個值。

      • 原始日誌

        content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
      • 加工規則

        e_set("url",url_parse_qs(v("content")))
      • 加工結果

        content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
        url:{
            "logType": "net_log",
            "uid": "62452****",
            "x": "1",
            "asb": "123"
        }
    • 樣本4:設定ignore_multi_fields為False,每個參數返回所有值。

      • 原始日誌

        content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
      • 加工規則

        e_set("url",url_parse_qs(v("content"),ignore_multi_fields=False))
      • 加工結果

        content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
        url:{
            "logType": ["net_log"],
              "uid": ["62452****"],
              "x": ["1", "2", "3"],
              "asb": ["123", "456"]
        }