漏洞收集

W3-w / 2023-09-01 / 原文

点击查看代码
import time

import requests
import re
import csv

requests.packages.urllib3.disable_warnings()

f = open("../outcome/vuldata.csv", mode="a", newline="", encoding="utf-8")
csvwriter = csv.writer(f)

start = 1
while start <= 315:
    print(start)
    url = f"https://ics.cnvd.org.cn/api/vulnerability/vulnerabilityInfos?pageSize=10&pageNo={start}"

    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
        "X-Token": "eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2MTQ4NDY3MTksImp0aSI6IjVhMmMwYWMyLTAzNTYtNDQ5ZC04YWY0LTdjZGE2MjVlODg2OCJ9.rD6Ac10ITCO93e3yTFLfr-jviq-vAOnUl5cgG1nympo",
        "Cookie": "JSESSIONID=BD8CDD390035EFFFB3C9CC382872EEB5"
    }
    resp = requests.get(url, headers=header, verify=False)
    pageText = resp.text

    # 解析数据
    obj = re.compile(r'"id":(?P<id>.*?),"vulNumber"', re.S)
    # 开始匹配
    idList = obj.findall(pageText)

    for id in idList:
        vulURL = f"https://ics.cnvd.org.cn/api/vulnerability/vulnerabilityInfos/{id}"
        vulResp = requests.get(vulURL, headers=header, verify=False)

        its = re.finditer(r'"vulNumber":"(?P<cnvdId>.*?)","cveId":(?P<cveId>.*?),"title":"(?P<title>.*?)","publicDate":"('
                          r'?P<publicDate>.*?)","grade":(?P<grade>.*?),"description":"(?P<description>.*?)","product":"\[{('
                          r'?P<product>.*?)}]",.*?,"refer":"(?P<refer>.*?)","solution":"(?P<solution>.*?)",.*?"patchLink":"(?P<patchLink>.*?)"', vulResp.text)

        for it in its:
            dic = it.groupdict()
            # print(dic)

            csvwriter.writerow(dic.values())
            time.sleep(1)

        vulResp.close()
    resp.close()

    start = start+1

f.close()

# print(vulResp.text)