用python實(shí)現(xiàn)前端表格導(dǎo)出

最近業(yè)務(wù)中使用了一個(gè)入侵檢測(cè)系統(tǒng)队秩,其前端使用flash實(shí)現(xiàn),查詢和導(dǎo)出數(shù)據(jù)功能非常的不友好昼浦。因此馍资,我寫(xiě)一個(gè)腳本來(lái)實(shí)現(xiàn)報(bào)警數(shù)據(jù)的導(dǎo)出和過(guò)濾,提高分析的效率关噪。
環(huán)境

  • windows7 x64
  • vscode
  • pandas鸟蟹,requests
  • python2.7

代碼

#-*- coding:utf-8 -*-
import requests
from requests.packages import urllib3
import time,csv
import pandas as pd
urllib3.disable_warnings()

#全局變量
session_id=''
s = requests.Session()
#需要防護(hù)的目標(biāo)地址
targets = [
    'x.x.x.x',
]
#合法的安全測(cè)試地址
exclude_ips=[
    'y.y.y.y',
]
#設(shè)備的IP地址
server_ip = "xx.xx.xx.xx"

#獲取表
def get_table(table_name):
    global session_id,s,server_ip
    
    #cookies
    cookies = {"JSESSIONID":session_id}
    page_num=0 #page頁(yè)碼
    total_page = 0 #頁(yè)碼總數(shù) 從0開(kāi)始算
    page_size = 1000 #單頁(yè)返回的記錄數(shù)
    table_data = [] #用來(lái)保存表中的數(shù)據(jù)
    while page_num <= total_page: #基當(dāng)前的頁(yè)碼小于頁(yè)碼總數(shù)
        #請(qǐng)求數(shù)據(jù)的url
        url = 'https://%s/query/query%s.action?currentTime=%d' % (server_ip,table_name,int(time.time()))
        #提交的參數(shù)
        data = {"pageSize":page_size,
            "endDate":"2020-02-18 14:00:00",
            "beginDate":"2020-02-18 00:00:00",
            "sessionID":session_id,
            "queryType":"0",
            "userId":"1",
            "pageNumber":page_num}
        #請(qǐng)求表格的數(shù)據(jù)
        r = s.post(url,data=data,cookies=cookies,verify=False)
        if r.status_code == 200:
            if page_num == 0:#若是第一頁(yè)
                #計(jì)算總頁(yè)碼
                total_page = int(r.json()['total'])/page_size
                print('total_page',total_page)
            #將數(shù)據(jù)存儲(chǔ)table_data
            table_data += r.json()['data']
        #頁(yè)碼加1
        page_num += 1
    #如果表內(nèi)數(shù)據(jù)不為空
    if table_data:
        #使用pandas處理數(shù)據(jù)
        df = pd.DataFrame(table_data)
        #過(guò)濾函數(shù)
        filter_condition = lambda x: (x['saddr'] in targets or x['daddr'] in targets) and x['saddr'] not in exclude_ips and x['daddr'] not in exclude_ips
        df = df[df.apply(filter_condition,axis=1)]
        #導(dǎo)出為csv文件
        df.to_csv('%s.csv'% table_name,encoding='utf-8')
        



        

def main():
    global session_id,s,server_ip
    
    #headers
    headers = {
        'Host': server_ip,
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0',
        'Accept': '*/*',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate, br',
        'Origin': 'https://%s' % server_ip,
        'Connection': 'keep-alive',
        'Referer': 'https://%s/index.swf/[[DYNAMIC]]/4' % server_ip, 
        'Content-type': 'application/x-www-form-urlencoded'
    }
    #提交的認(rèn)證信息
    data = {"username":"admin","password":"****","isNeed":False}
    #登陸
    url = 'https://%s/login/login.action?currentTime=%d' % (server_ip,int(time.time()))
    r = s.post(url,headers = headers,data=data,verify=False)

    if r.status_code == 200:
        #獲取會(huì)話id
        session_id = r.json()['sessionID']
        print session_id
        #系統(tǒng)中表的名字
        table_names = [
            'MaliciousCodeInfectionEvent',
            'WebEvent',
            'CommunicationBehaviorEvent',
            'SpreadMaliciousCodeEvent',
            'MaliciousUrlAccessEvent',
            'AttackAttemptEvent',
            'OtherEvent'
            ]
        for table_name in table_names:
            print table_name
            #獲取表的內(nèi)容
            get_table(table_name)

main()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者使兔。
  • 序言:七十年代末建钥,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虐沥,更是在濱河造成了極大的恐慌熊经,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件欲险,死亡現(xiàn)場(chǎng)離奇詭異镐依,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)天试,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)槐壳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人秋秤,你說(shuō)我怎么就攤上這事宏粤〗徘蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵绍哎,是天一觀的道長(zhǎng)来农。 經(jīng)常有香客問(wèn)我,道長(zhǎng)崇堰,這世上最難降的妖魔是什么沃于? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮海诲,結(jié)果婚禮上繁莹,老公的妹妹穿的比我還像新娘。我一直安慰自己特幔,他們只是感情好咨演,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蚯斯,像睡著了一般薄风。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拍嵌,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天遭赂,我揣著相機(jī)與錄音,去河邊找鬼横辆。 笑死撇他,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狈蚤。 我是一名探鬼主播困肩,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炫惩!你這毒婦竟也來(lái)了僻弹?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤他嚷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后芭毙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體筋蓖,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年退敦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粘咖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侈百,死狀恐怖瓮下,靈堂內(nèi)的尸體忽然破棺而出翰铡,到底是詐尸還是另有隱情,我是刑警寧澤讽坏,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布锭魔,位于F島的核電站,受9級(jí)特大地震影響路呜,放射性物質(zhì)發(fā)生泄漏迷捧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一胀葱、第九天 我趴在偏房一處隱蔽的房頂上張望漠秋。 院中可真熱鬧,春花似錦抵屿、人聲如沸庆锦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肥荔。三九已至,卻和暖如春朝群,著一層夾襖步出監(jiān)牢的瞬間燕耿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工姜胖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留誉帅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓右莱,卻偏偏與公主長(zhǎng)得像蚜锨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慢蜓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容