记一次安全客数据爬取

1.页面分析

url = r"https://www.anquanke.com/”

这是漏洞搜索页面安全客漏洞搜索采用GET方式提交参数,在后续的实现过程中发生了一些意外,出现了一个我没有找到原因的问题,在本篇文章中我也会复现我当时出错的思路和想法,各位看官大人如果知道原因烦请指出,先谢过各位了。
2.使用requests进行请求
在初步做页面分析时候,使用了https://www.anquanke.com/vul?s=的地址发起请求。

import requests
url = r"https://www.anquanke.com/vul?s=SaltStack"
response = requests.get(url)

但是在分析返回的数据时,却出现了问题。
在这里插入图片描述返回的HTML提示未搜索到SaltStack相关的结果。
在这里插入图片描述在正常页面搜索是存在搜索的结果,之后又尝试请求搜索了apache等,均提示未搜索到相关的结果。
3.使用BurpSuite抓包进行分析
在使用BurpSuite抓包之后,截取到的请求除了正常向www.anquanke.com/vul?s=SaltStack发送的请求之外,还有一个请求引起了我的注意,也是最终完成爬虫的关键。
在这里插入图片描述BurpSuite还截取到一个发送到api.anquanke.com的请求,在BurpSuite上测试后返回一个json数据的响应,在分析之后得出结论,返回的json数据就是搜索结果。
4.改变请求地址继续尝试

import requests
url = r"https://api.anquanke.com//data/v1/search/vul?s=SaltStack"
response = requests.get(url)
print(response.json())

在这里插入图片描述此时已经能正确获取到数据,剩下就是完善代码提取和写入数据即可。
5.完善代码

import xlrd
import xlwt
import requests
url = r'https://api.anquanke.com//data/v1/search/vul?s='#api请求地址
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.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","X-Requested-With": "XMLHttpRequest","Origin": "https://www.anquanke.com","Connection": "close","Referer": "https://www.anquanke.com/",
}data = xlrd.open_workbook('search.xls')#读取excel文档
table = data.sheet_by_index(0)#读取文档第一个sheet页
nrows = table.nrows#获取sheet页行数
ncols = table.ncols#获取sheet页列数
count = 1#标识,方便后面写入excel
workbook = xlwt.Workbook(encoding = 'utf-8')#创建新的excel文档
worksheet = workbook.add_sheet('1')#创建新文档的新sheet页,用于写入数据。
for i in range(nrows):#遍历漏洞文档行vul = table.cell(i,0).value#获取漏洞文档第i行第一列的数据# print(vul)vul_url = url + vul#拼接请求地址print(vul_url)#打印请求地址response = requests.get(vul_url)# print(response.text)data = response.json()['data']#将返回的json数据转换并获取data的value,返回的数据是一个多维字典形式,漏洞数据是data的值,变量data是一个存了很多字典的数组。for j in data:#遍历value,j为一个漏洞的数据,是一个字典类型。# print(j)#下面的都是数据写入,参数含义:write(行,列,数值)keys = j.keys()# print(keys)cols = 0for key in keys:# print(key)worksheet.write(count,cols,label = j[key])cols = cols + 1count = count + 1#标识自增print("{}已写入".format(j["name"]),count)
workbook.save('vul.xls')#保存新建的excel文档

6.后记
这个小项目,最终实现是读取当前文件夹下的search.xls文档,遍历第一例的漏洞列表后,爬取安全客相关数据信息并最终写入excel文档并保存到vul.xls,至于为什么请求www.anquanke.com/vul?s=无法获取正确的响应,我也没弄明白,希望知道的大佬能为我答疑解惑,感激不尽!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部