点击查看代码
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)