python爬虫--自动获取seebug的poc
简单的写了一个爬取www.seebug.org上poc的小玩意儿~
首先我们进行一定的抓包分析
我们遇到的第一个问题就是seebug需要登录才能进行下载,这个很好处理,只需要抓取返回值200的页面,将我们的headers信息复制下来就行了
(这里我就不放上我的headers信息了,不过headers里需要修改和注意的内容会在下文讲清楚)
headers = {
'Host':******,
'Connection':'close',
'Accept':******,
'User-Agent':******,
'Referer':'https://www.seebug.org/vuldb/ssvid-',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cookie':***********
}
由上所知,我们的中点就是referer这一项,是我们后面要进行修改的
那么怎么去修改这个呢
我先进行点击下载链接抓包发现,seebug的poc下载链接特别的整齐:
'https://www.seebug.org/vuldb/downloadPoc/xxxxx',
后面只需要加上一个五位数就行,而且五位数是连号的哦!
这就一目了然,我更改了五位数再次进行请求时发现,并没有返回美丽的200状态码,瞄了一眼header,发现了referer这一项:
'Referer':'https://www.seebug.org/vuldb/ssvid-xxxxx'
也就是说referer这一项的五位数字也要随之变化,这样我们的get请求头部就完成了
接下来是线程的问题
使用了queue和threading进行多线程处理,发现我们不能图快,不然会被反爬虫发现
于是导入time增加time.sleep(1),能有一秒的休眠就行了,线程数给了2个(这样看来好像线程的意义并不大,不过也就这么写啦)
# coding=utf-8 import requests
import threading
import Queueimport time headers = {
******
}
url_download = 'https://www.seebug.org/vuldb/downloadPoc/' class SeeBugPoc(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self._queue = queue def run(self):
while not self._queue.empty():
url_download = self._queue.get_nowait()
self.download_file(url_download) def download_file(self,url_download):
r = requests.get(url = url_download,headers = headers)
print r.status_code
name = url_download.split('/')[-1]
print name
if r.status_code == 200:
f = open('E:/poc/'+name+'.txt','w')
f.write(r.content)
f.close()
print 'it ok!'
else:
print 'what fuck !'
time.sleep(1)
'''
def get_html(self,url): r = requests.get(url = url,headers = headers)
print r.status_code
print time.time()
''' def main():
queue = Queue.Queue()
for i in range(93000,93236):
headers['Referer'] = 'https://www.seebug.org/vuldb/ssvid-'+str(i)
queue.put('https://www.seebug.org/vuldb/downloadPoc/'+str(i)) #queue用来存放设计好的url,将他们放入一个队列中,以便后面取用 threads = []
thread_count = 2
for i in range(thread_count):
threads.append(SeeBugPoc(queue)) for i in threads:
i.start() for i in threads:
i.join() if __name__ == '__main__':
main()
代码如上
控制下载的range()中的两个五位数,大家只要去seebug库中找一找想要扫描的库的开头和结尾编码的五位数就行了(也就是他们的编号)
关于返回的状态码,如果项目不提供poc下载、poc下载不存在、poc需要兑换币才能下载,就不能够返回正常的200啦(非正常:404/403/521等)
当然,如果一直出现521,可以考虑刷新网页重新获取header并修改代码
最后进行一个状态码的判断,并且将200的文件写出来就好了
(
表示惭愧感觉自己写的很简单
如果大家发现错误或者有疑惑可以留言讨论哦
)
python爬虫--自动获取seebug的poc的更多相关文章
- Python 之自动获取公网IP
Python 之自动获取公网IP 2017年9月30日 文档下载:https://wenku.baidu.com/view/ff40aef7f021dd36a32d7375a417866fb84ac0 ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- python爬虫3——获取审查元素(板野友美吧图片下载)
测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...
- python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式
一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...
- Python爬虫:获取JS动态内容
经过一段时间的python学习,能写出一些爬虫了.但是,遇到js动态加载的网页就犯了难.于是乎谷歌.百度,发现个好介绍http://www.jianshu.com/p/4fe8bb1ea984 主要就 ...
- python爬虫 分页获取图片并下载
--刚接触python2天,想高速上手,就写了个爬虫,写完之后,成就感暴增,用起来顺手多了. 1.源代码 #coding=utf-8 import urllib import re class Pag ...
- Python爬虫:获取糗事百科笑话
为了收集笑话也是挺拼的,我就不相信你所有的都看过了.还有,请问哪位仁兄能指点之下怎么把网上抓取到的图片写到word里面,捉摸了好久都没弄出来. 糗百不需要登录,html直接解析,只要在reques ...
- python爬虫之获取验证码登陆
#--coding:utf-8#author:wuhao##这里我演示的就是本人所在学校的教务系统#import urllib.requestimport urllib.parseimport rei ...
- Python爬虫案例-获取最新的中国行政区域划分
源网页:中国统计局标准 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/ 打开网页后可以分析出行政区域划分共分为5层 根据传入参数,生成网页 ...
随机推荐
- Realm的一对多配置以及版本兼容
前言:本篇博客将介绍Realm的一些高级用法,基本使用在这里 一.配置一对多关系 // // Teacher.h #import <Realm/Realm.h> #import " ...
- Ionic在Android上部署app步骤
详情链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/ionic%E5%9C%A8android%E4%B8%8A%E9%83% ...
- docker在windows,centos中的安装
centos安装方式,采用阿里云的镜像和安装脚本 或者到https://store.docker.com/search?type=edition&offering=community下载相应系 ...
- Intellij IDEA 2017集成MyBatis三剑客
MyBatis三剑客指的是:MyBatis-Generate.Mybatis Plus.MyBatis-PageHelper MyBatis-Generate 使用 Mybatis Generator ...
- 【JavaScript学习】-事件响应,让网页交互
什么是事件: JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单 ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- Swift数组字面量
可以用一个数组字面量来初始化一个数组,简单地把一个或多个值放在一起就可以了.数组字面量的写法是一行用逗号隔开的值,并在行的两端用一对方括号包起来: [value , value , value ] 下 ...
- 【Android Developers Training】 32. 向其它应用发送简单数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- spring的Convert机制
spring.core包内有Converter接口,方法是T convert(S source);从一个类型转为内容一个类型的实际转化器:converters可能非常多,需要一个注册器来集中管理使用, ...
- axis1.4开发webservice服务端(快速入门)-基于jdk1.4
写在前面: 现在有很多开发webservice的方法以及框架,什么cxf等,但是这些在你编写服务类的时候都要用到注解这个功能.如果现在的jdk是1.4的,那么就不能使用注解这个功能了.所以这里可以用到 ...