0x01python-spider-exploit-db

在一次寻找大批量的久远漏洞的poc的时候,我这个python小白决定顺手写个exploit-db的爬虫

这类爬虫的项目其实还是有蛮多可以参考的

我的主要需求:已知cve号,搜索是否有poc并返回poc页面

先进行一次搜索流程

在输入框输入cve号,页面就会显示出链接

image-20210105144411007

点击后,这个就是我们需要的poc的url:https://www.exploit-db.com/exploits/49068

image-20210105144437086

多尝试几个就可以知道poc的url就是”https://www.exploit-db.com/exploits/+某数字",那么这个某数字就是我们需要返回的

抓包,得到请求包,找到对应的cve号输入的位置search[value],修改为我们可以输入的参数

1
url = 'https://www.exploit-db.com/?draw=2&columns[0][data]=date_published&columns[0][name]=date_published&columns[0][searchable]=true&columns[0][orderable]=true&columns[0][search][value]=&columns[0][search][regex]=false&columns[1][data]=download&columns[1][name]=download&columns[1][searchable]=false&columns[1][orderable]=false&columns[1][search][value]=&columns[1][search][regex]=false&columns[2][data]=application_md5&columns[2][name]=application_md5&columns[2][searchable]=true&columns[2][orderable]=false&columns[2][search][value]=&columns[2][search][regex]=false&columns[3][data]=verified&columns[3][name]=verified&columns[3][searchable]=true&columns[3][orderable]=false&columns[3][search][value]=&columns[3][search][regex]=false&columns[4][data]=description&columns[4][name]=description&columns[4][searchable]=true&columns[4][orderable]=false&columns[4][search][value]=&columns[4][search][regex]=false&columns[5][data]=type_id&columns[5][name]=type_id&columns[5][searchable]=true&columns[5][orderable]=false&columns[5][search][value]=&columns[5][search][regex]=false&columns[6][data]=platform_id&columns[6][name]=platform_id&columns[6][searchable]=true&columns[6][orderable]=false&columns[6][search][value]=&columns[6][search][regex]=false&columns[7][data]=author_id&columns[7][name]=author_id&columns[7][searchable]=false&columns[7][orderable]=false&columns[7][search][value]=&columns[7][search][regex]=false&columns[8][data]=code&columns[8][name]=code.code&columns[8][searchable]=true&columns[8][orderable]=true&columns[8][search][value]=&columns[8][search][regex]=false&columns[9][data]=id&columns[9][name]=id&columns[9][searchable]=false&columns[9][orderable]=true&columns[9][search][value]=&columns[9][search][regex]=false&order[0][column]=9&order[0][dir]=desc&start=0&length=15&search[value]=%s&search[regex]=false&author=&port=&type=&tag=&platform=&_=1606893892234'%s

刚开始直接获取的是返回的页面的html,但是没有相关数字的信息,一度以为自己写错了,毕竟这算是我第二次写爬虫。后来查看页面源代码,确实没有相关的信息,跑去问gps(前端,才知道是拿了接口返回的数据,塞到网页里

f12后发现在json数据包里

image-20210105145116203

于是开始研究怎么获取json包的数据

重点函数:spider_request.json()

但是一开始使用这个函数一直报错,提示没有返回json,确认了下请求头也没有错误

image-20210105150842464

改了很久,最后将header改为这样就可以了

1
2
3
4
5
6
header = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Sec-Fetch-Mode': 'cors',
'User-Agent': random.choice(ua_list),
'X-Requested-With': 'XMLHttpRequest'
}

运行效果:

image-20210105151415897

项目地址:https://github.com/0xkami/expolit-db-spider