解析函數(shù)
本文介紹User-Agent解析函數(shù)的語法規(guī)則,包括參數(shù)解釋、函數(shù)示例等。
函數(shù)列表
函數(shù) | 說明 |
解析User-Agent中的設(shè)備信息。 | |
解析User-Agent中的操作系統(tǒng)信息。 | |
解析User-Agent中的瀏覽器信息。 | |
解析User-Agent中所有信息。 | |
解析URL的組成部分。 | |
解析URL中查詢字符串包含的參數(shù)。 |
User-Agent解析函數(shù)會剔除解析結(jié)果為None的字段,例如解析的設(shè)備數(shù)據(jù)為{'brand': None, 'family': 'Other', 'model': None}
,則brand字段和model字段將被剔除,最終的解析結(jié)果為{'family': 'Other'}
。
ua_parse_device
解析User-Agent中的設(shè)備信息。
函數(shù)格式
ua_parse_device(value)
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
value
String
是
待解析的User-Agent字符串。
返回結(jié)果
返回JSON類型的數(shù)據(jù)集。
函數(shù)示例
原始日志
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
加工規(guī)則
e_set("new_column",ua_parse_device(v("http_user_agent")))
加工結(jié)果
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中的操作系統(tǒng)信息。
函數(shù)格式
ua_parse_os(value)
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
value
String
是
待解析的User-Agent字符串。
返回結(jié)果
返回JSON類型的數(shù)據(jù)集。
函數(shù)示例
原始日志
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
加工規(guī)則
e_set("new_column",ua_parse_os(v("http_user_agent")))
加工結(jié)果
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中的瀏覽器信息。
函數(shù)格式
ua_parse_agent(value)
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
value
String
是
待解析的User-Agent字符串。
返回結(jié)果
返回JSON類型的數(shù)據(jù)集。
函數(shù)示例
原始日志
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
加工規(guī)則
e_set("new_column",ua_parse_agent(v("http_user_agent")))
加工結(jié)果
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中的所有信息。
函數(shù)格式
ua_parse_all(value)
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
value
String
是
待解析的User-Agent字符串。
返回結(jié)果
返回JSON類型的數(shù)據(jù)集。
函數(shù)示例
原始日志
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
加工規(guī)則
e_set("new_column",ua_parse_all(v("http_user_agent")))
加工結(jié)果
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的組成部分。
函數(shù)格式
url_parse(url, scheme="", allow_fragments=True)
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
value
String
是
待解析的URL。
scheme
String
否
網(wǎng)絡(luò)協(xié)議,默認為空字符。
僅在URL中未指定網(wǎng)絡(luò)協(xié)議時,返回結(jié)果中的scheme字段才會使用此處設(shè)置的值。
allow_fragments
Boolean
否
是否解析URL中的fragment部分。
True(默認值):解析URL中的fragment部分,返回結(jié)果中的fragment字段為具體值。
False:不解析URL中的fragment部分,返回結(jié)果中的fragment字段為空字符串。
返回結(jié)果
返回解析后的JSON數(shù)據(jù),具體參數(shù)說明如下表所示。
字段
說明
scheme
網(wǎng)絡(luò)協(xié)議
netloc
網(wǎng)絡(luò)位置
path
分層路徑標(biāo)識
query
查詢組件
fragment
片段標(biāo)識符
函數(shù)示例
示例1:使用默認參數(shù),返回URL的各個組成部分。
原始日志
content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
加工規(guī)則
e_set("url",url_parse(v("content")))
加工結(jié)果
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:設(shè)置allow_fragments為False,返回結(jié)果中的fragment參數(shù)值為空。
原始日志
content:https://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
加工規(guī)則
e_set("url",url_parse(v("content"),allow_fragments=False))
加工結(jié)果
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:設(shè)置scheme為https,allow_fragments為False,返回結(jié)果中scheme參數(shù)值為https,fragment參數(shù)值為空。
原始日志
content://username:username@example.com:8083/hello/asdah/;type=docx?filename=python3.docx#urllib
加工規(guī)則
e_set("url",url_parse(v("content"),scheme="https", allow_fragments=False))
加工結(jié)果
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中查詢字符串的組成部分。
函數(shù)格式
url_parse_qs( url_qs, keep_blank_values=False, strict_parsing=False, encoding="utf-8", errors="replace", ignore_multi_fields=True, )
參數(shù)說明
參數(shù)名稱
數(shù)據(jù)類型
是否必填
說明
url_qs
String
是
待解析的URL查詢字符串。
keep_blank_values
Boolean
否
是否返回值為空的參數(shù)。
False(默認值):不返回。
True:返回,且將空值處理為空字符串。
strict_parsing
Boolean
否
是否處理解析錯誤。
True:解析報錯會引發(fā)ValueError異常。
False(默認值):忽略錯誤。
encoding
String
否
指定編碼方式,將含有百分號(%)的轉(zhuǎn)義字符解析為Unicode字符,默認為utf-8。支持ASCII。
errors
String
否
按照編碼方式無法識別字符時的處理方案。取值包括:
ignore:直接忽略。
strict:直接報錯,丟棄此條日志數(shù)據(jù)。
replace(默認值):使用半角問號(?)替換無法識別部分。
xmlcharrefreplace:使用對應(yīng)XML字符替換無法識別部分。
ignore_multi_fields
Num
否
指定單個返回參數(shù)的值的個數(shù)。
True(默認值):每個參數(shù)只返回第一個值, 類型為String。
False:每個參數(shù)都返回所有值,類型為List。
返回結(jié)果
返回解析后的JSON數(shù)據(jù),具體參數(shù)如下表所示。
參數(shù)
說明
logType
日志類型
uid
日志的唯一標(biāo)識
time
日志的時間
msg
日志中的信息
函數(shù)示例
示例1:設(shè)置keep_blank_values為True,返回結(jié)果中包含值為空的參數(shù)。
原始日志
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
加工規(guī)則
e_set("url",url_parse_qs(v("content"), keep_blank_values=True))
加工結(jié)果
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:設(shè)置keep_blank_values為默認值(False),返回結(jié)果無值為空的參數(shù)。
原始日志
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
加工規(guī)則
e_set("url",url_parse_qs(v("content")))
加工結(jié)果
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:設(shè)置ignore_multi_fields為默認值(True),每個參數(shù)只返回第一個值。
原始日志
content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
加工規(guī)則
e_set("url",url_parse_qs(v("content")))
加工結(jié)果
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:設(shè)置ignore_multi_fields為False,每個參數(shù)返回所有值。
原始日志
content:logType=net_log&uid=62452****&x=1&x=2&x=3&asb=123&asb=456
加工規(guī)則
e_set("url",url_parse_qs(v("content"),ignore_multi_fields=False))
加工結(jié)果
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"] }