补天漏洞厂商资产数据爬虫以及总漏洞量可视化分析


title: 补天厂商数据爬虫
copyright: true
top: 0
date: 2019-07-11 23:04:53
tags: 爬虫
categories: 爬虫笔记
permalink:
password:
keywords: 补天爬虫
description: 一次简单的信息获取,尝试对补天厂商数据爬取

他希望快点完成这个交易,把后路给断了,没了后路就不用怕什么了,谁说的来着,想要翻过一堵高墙,最好的办法是先把自己的帽子扔过去,这样你自然就有了翻墙的决心。

补天的厂商分为专属SRC,公益SRC,以及一些以及收录但是不展示出来的厂商,本文将对这三种厂商信息进行爬取,然后对补天的一些漏洞数据进行可视化展示。

专属 SRC

专属 SRC 网址 : https://www.butian.net/Reward/plan

通过分析请求,发现数据是前端使用ajax动态获取

专属 SRC 接口 : https://www.butian.net/Reward/corps
请求方式      : POST
请求参数      :
				data = {
							's': '3',
							'p': '2',
							'sort': '2'
							}

获取的数据是json格式,其中具体的数据在

jsons['data']['list']['host']            -->  域名
jsons['data']['list']['company_name']    -->  企业名称

使用代码进行获取与解析

import requests
def parse_data(jsons):
    datas = (jsons['data'])
    real_data = (datas['list'])
    for d in real_data:
        print(d['host'])
        print(d['company_name'])
		# 下面四行是保存数据,取消注释即可执行保存
    	# with open('企业域名.txt','a+',encoding='utf-8')as a:
        #     a.write(d['host'].replace('www.','')+'\n')
        # with open('企业名称.txt','a+',encoding='utf-8')as a:
        #     a.write(d['company_name']+'\n')

url = 'https://www.butian.net/Reward/corps'
data = {
's': '3',
'p': '2',
'sort': '2'
}
r = requests.post(url=url, data=data)
parse_data(r.json())

返回结果:

然后将专属 SRC 的域名和企业名称保存即可,到这里补天的 专属 SRC 厂商信息获取完毕

公益 SRC

同上,先对公益 SRC 的信息进行探测,使用相同的方法得到公益 SRC 的接口

公益 SRC 接口 : https://www.butian.net/Reward/pub
请求方式      : POST
请求参数      :
				data = {
							's': '1',
							'p': '1'
							}

获取的数据是json格式,其中具体的数据在

jsons['data']['list']['company_name']    -->  企业名称

其中发现,通过修改 post 数据中的 p 参数,能够实现翻页功能,目前发现一共存在174页

可惜的是,在公益 SRC 提供的接口中,只有厂商的企业名称,并没有域名网址信息。

简单的尝试请求一下第一页获取数据:

import requests
def parse_data(jsons):
    datas = (jsons['data'])
    real_data = (datas['list'])
    for d in real_data:
        print(d['company_name'])
url = 'https://www.butian.net/Reward/pub'
data = {
    's': '1',
    'p': '1'
}
r = requests.post(url=url, data=data)
parse_data(r.json())

返回结果:

可以获取到数据,接下来只需要循环一下,即可获取到所有的 公益 SRC 企业名称

使用代码:

import requests
def parse_data(jsons):
    datas = (jsons['data'])
    real_data = (datas['list'])
    for d in real_data:
        print(d['company_name'])
		# 下面两行的功能是保存数据,取消注释即可执行
        # with open('企业名称.txt','a+',encoding='utf-8')as a:
        #     a.write(d['company_name']+'\n')

for i in range(1,175):
    print('目前获取第 {} 页'.format(i))
    url = 'https://www.butian.net/Reward/pub'
    data = {
        's': '1',
        'p': i
    }
    r = requests.post(url=url, data=data)
    try:
        parse_data(r.json())
    except Exception as e:
        print(e)

返回结果:

需要注意的是,我这里并没有添加请求头headers,也没有设置cookie,但是补天并没有禁止我的数据爬取,如果出现获取不到信息,需要将自己的请求头和cookie添加进去,使用方法:

import requests
import re
import time
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh,zh-CN;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'Content-Length': '16',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': '这里改成你自己的cookie',
'Host': 'www.butian.net',
'Origin': 'https://www.butian.net',
'Referer': 'https://www.butian.net/Reward/plan',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'

}
def parse_data(jsons):
    datas = (jsons['data'])
    real_data = (datas['list'])
    for d in real_data:
        print(d['company_name'])
		# 下面两行的功能是保存数据,取消注释即可执行
        # with open('企业名称.txt','a+',encoding='utf-8')as a:
        #     a.write(d['company_name']+'\n')

for i in range(1,175):
    print('目前获取第 {} 页'.format(i))
    url = 'https://www.butian.net/Reward/pub'
    data = {
        's': '1',
        'p': i
    }
    r = requests.post(url=url, data=data)
    try:
        parse_data(r.json())
    except Exception as e:
        print(e)

到这里 公益 SRC 爬取完毕

其他 厂商 爬取

补天还有一些厂商,并没有出现在 企业和公益 SRC 中,获取的方式也比较独特,个人认为是补天数据安全策略没有做好。

首先需要注册一个补天账号,然后进入提交漏洞页面

提交网址 : https://www.butian.net/Loo/submit

按 F12,进入调试界面

然后在厂商名称输入框,输入 1

查看请求

可以看到后端数过来的数据,其中数据都是 **企业名称或者域名中带 1 **的企业信息

尝试对请求进行分析:

厂商 请求 接口  : https://www.butian.net/Home/Loo/getCompanyList
请求方式       : POST
请求参数       :
				data = {
							'token': 'b660ca4a609f28f575e8bb026e65cf706310cbbb',
							'company_name': '1'
							}

这里有两个地方必须要设置

第一个是请求头部分,这里需要cookie来伪装登陆状态

第二个是发送数据部分,这里需要这是口令token来确保每次请求的数据

获取的数据样式为:

获取的数据是json格式,其中具体的数据在

jsons['data']['company']    -->  企业名称

获取到的企业名称中,部分厂商返回的是 企业名称,另一部分返回的是厂商的域名
所以要做判断

因为涉及到多次的发起请求,所以为了不触发补天的反爬虫策略,每次请求后,随机等待一段时间

使用代码:

# -*- coding:utf-8 -*-
#__author__:langzi
#__blog__:www.langzi.fun
import requests
import time
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language'
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子燕青啦啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值