栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

利用Python,通过关键字获取漏洞平台最新漏洞信息

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用Python,通过关键字获取漏洞平台最新漏洞信息

因要每天去查找漏洞信息,来判断架构和应用服务有没有新漏洞被发现,若有 则需修复升级。所以写了一个去漏洞库平台通过关键字爬取数据生成日志文件,这三个平台,就美国国家信息安全漏洞库地址会时不时出现超时情况。若出现超时,可多试两次,三个平台检索出的漏洞差不多,写的不好,仅供参考

python版本3.7
pip安装requests即可

#coding=utf-8
import requests as r
import re
import time
import datetime

#爬取国家信息安全漏洞平台
class gjxxaqpt:
    def get_404(self,url,keyword):
 #定义提交数据 qcvCname 检索的词,pageno 页数 一般是抓取第一页
 data = {"qcvCname":keyword,"pageno":1}
 #post数据
 result = r.post(url,data=data).text
 #正则匹配信息
 filter_result = re.findall('
  • rn tt (.*?).*?

    (.*?).*?(.*?)rntttttt .*?

  • ',result,re.S) return filter_result def get_404_mes(self,url): header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'} try: result = r.get(url,headers=header).text filter_result = re.findall('.*?

    n(.*?)rnttt

    ',result,re.S) if filter_result is not None: return filter_result[0] else: return "" except: print("连接超时"+url) def write_file(self,keyword,date_time): #定义post的url url = "http://www.cnnvd.org.cn/web/vulnerability/queryLds.tag" #定义后面组合信息需要的域名 url_domain = "http://www.cnnvd.org.cn" #存放最后结果数据的数组 mes_list = [] #循环检索关键词 for keyword in keylist: try: #调用方法获取检索的结果 get_404_re = self.get_404(url,keyword) #循环结果,拼接成字符串,写入log文件 for res in get_404_re: #判断包含本年日期的漏洞 if date_time in res[4]: mes_url = url_domain + res[1] try: message = self.get_404_mes(mes_url) mes = res[0] + " | " "漏洞编号:" + res[2] + " | " + "等级:" + res[3] + " | " + "时间:" + res[4] + " | " + "详情地址:" + mes_url + " | " + "漏洞简介:" + message mes_list.append(mes) except: print("timeout: "+mes_url) except: print("timeout:"+url+","+"keyword") return mes_list #cve中文漏洞信息库 - scap中文社区 class cve_scap: #获取所有漏洞集合 def get_cve_404(self,url,keyword): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'} #定义提交数据 qcvCname 检索的词,pageno 页数 一般是抓取第一页 data = {"search_type":"t_keyword","keyword":keyword} #post数据 result = r.get(url,params=data).text filter_result = re.findall(".*?n(.*?)n .*?(.*?).*?title='(.*?)' class='grade",result,re.S) return filter_result #对单个漏洞信息获取 def get_cve_404_mes(self,url): header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'} try: result = r.get(url,headers=header).text filter_result = re.findall("pad30T pad30B mrg0B' style='word-wrap: break-word;'>n (.*?)

    ",result,re.S) if filter_result is not None: return filter_result[0] else: return "" except: print("timeout: " + url) #信息获取 def write_file(self,keylist,date_time): #定义post的url url = "http://cve.scap.org.cn/vulns/1" #定义数组,存放信息 mes_list = [] for keyword in keylist: #爬取网站 html_filter = self.get_cve_404(url,keyword) #定义后面组合信息需要的域名 url_domain = "http://cve.scap.org.cn" for res in html_filter: if date_time in res[2]: try: mes_url = url_domain + res[0].strip('"') message = self.get_cve_404_mes(mes_url) mes = "漏洞编号:" + res[1] + " | " + "等级:" + res[3] + " | " + "时间:" + res[2] + " | " + "详情地址:" + mes_url + " | " + "漏洞简介:" + message.replace("n","") mes_list.append(mes) except: print("timeout: "+mes_url) return mes_list #美国国家信息安全漏洞库 class nvd_nist: #获取所有漏洞集合 def get_nvd_404(self,url,keyword): headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'} #定义提交数据 qcvCname 检索的词,pageno 页数 一般是抓取第一页 data = {"form_type":"Basic","results_type":"overview","query":keyword,"search_type":"all"} #关闭ssl告警提示 r.packages.urllib3.disable_warnings() #post数据 result = r.get(url,params=data,verify=False).text filter_result = re.findall("
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/220487.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号