美文网首页
用python实现前端表格导出

用python实现前端表格导出

作者: sunnnnnnnnnny | 来源:发表于2020-02-19 07:14 被阅读0次

最近业务中使用了一个入侵检测系统,其前端使用flash实现,查询和导出数据功能非常的不友好。因此,我写一个脚本来实现报警数据的导出和过滤,提高分析的效率。
环境

  • 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()
#需要防护的目标地址
targets = [
    'x.x.x.x',
]
#合法的安全测试地址
exclude_ips=[
    'y.y.y.y',
]
#设备的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页码
    total_page = 0 #页码总数 从0开始算
    page_size = 1000 #单页返回的记录数
    table_data = [] #用来保存表中的数据
    while page_num <= total_page: #基当前的页码小于页码总数
        #请求数据的url
        url = 'https://%s/query/query%s.action?currentTime=%d' % (server_ip,table_name,int(time.time()))
        #提交的参数
        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}
        #请求表格的数据
        r = s.post(url,data=data,cookies=cookies,verify=False)
        if r.status_code == 200:
            if page_num == 0:#若是第一页
                #计算总页码
                total_page = int(r.json()['total'])/page_size
                print('total_page',total_page)
            #将数据存储table_data
            table_data += r.json()['data']
        #页码加1
        page_num += 1
    #如果表内数据不为空
    if table_data:
        #使用pandas处理数据
        df = pd.DataFrame(table_data)
        #过滤函数
        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)]
        #导出为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'
    }
    #提交的认证信息
    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:
        #获取会话id
        session_id = r.json()['sessionID']
        print session_id
        #系统中表的名字
        table_names = [
            'MaliciousCodeInfectionEvent',
            'WebEvent',
            'CommunicationBehaviorEvent',
            'SpreadMaliciousCodeEvent',
            'MaliciousUrlAccessEvent',
            'AttackAttemptEvent',
            'OtherEvent'
            ]
        for table_name in table_names:
            print table_name
            #获取表的内容
            get_table(table_name)

main()

相关文章

  • 用python实现前端表格导出

    最近业务中使用了一个入侵检测系统,其前端使用flash实现,查询和导出数据功能非常的不友好。因此,我写一个脚本来实...

  • LuckySheet 实现 excel 的导入与导出

    需求:前端使用了 LuckySheet 来实现表格,现在需要实现对这个表格带有样式的导入及导出。在导入时只导入绿色...

  • Quasar 导出的csv中文乱码

    任务:将前端表格导出excel。 前端的表格是Quasar的table组件,官方给出了文件导出的例子。例子是利用 ...

  • 前端实现Excel表格导出

    因为公司需求,要前端实现表格导出,所以折腾了一下csv,上手之后觉得很简单,记录一下。 第一步:上一个a标签,加上...

  • vue前端实现导出表格

    第一种方法:首先安装两个依赖1.npm install -S file-saver xlsx 2.npm inst...

  • GridManager 导出

    GridManager 具有表格数据导出功能,该功能为纯前端实现,对后端无依赖。 1.初始化时指定启用导出功能。方...

  • vue导出功能可视化的方法

    思路 前端调用接口分批获得需要导出的数据 将数据合并,生成excel表格并下载,导出功能实现 用到的依赖库 用到的...

  • vue.js、javascript前端导出excel文件

    (vue.js、javascript导出excel文件,前端导出excel文件) 项目需要导出excel表格,本来...

  • 前端vue实现表格的导出

    1. Vue项目中将table组件导出Excel表格以及打印页面内容 1.这里主要需要两个依赖:xlsx file...

  • vue项目实现导入/导出Excel

    前端方案 首先安装依赖包 前端实现方案 后端处理导出 前端通过字节流或者url实现导出,字节流方式导出的文件方式可...

网友评论

      本文标题:用python实现前端表格导出

      本文链接:https://www.haomeiwen.com/subject/zwtnfhtx.html