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层 根据传入参数,生成网页 ...
随机推荐
- python网络爬虫之使用scrapy自动爬取多个网页
前面介绍的scrapy爬虫只能爬取单个网页.如果我们想爬取多个网页.比如网上的小说该如何如何操作呢.比如下面的这样的结构.是小说的第一篇.可以点击返回目录还是下一页 对应的网页代码: 我们再看进入后面 ...
- Hadoop 笔记1 (原理和HDFS分布式搭建)
1. hadoop 是什么 以及解决的问题 (自行百度) 2.基本概念的讲解 1. NodeName master 节点(NN) 主节点 保存了metaData(元数据信息) 包括文件的owener ...
- MVP架构
一.介绍 MVP(Model View Presenter)架构是从著名的MVC(Model View Controller)架构演变而来的.对于在Android应用中开发就可以视为是MVC架构,布局 ...
- 手把手教你 基础 整合最优雅SSM框架:SpringMVC + Spring
我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教学课堂中,也会把SSH作为最核心的教学内容. 但是,我们在实际应用中发现,SpringMVC可以完全替代Struts,配 ...
- video+ audio
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 使用Scribefire在博客中插入语法高亮 II
效果如下, 这是我们在Scribefire中添加的code按钮,单击此按钮,则会出现 在codeHere中直接输入代码就可以了. 查看html 可以看到,其中已经添加了<pre>标签. 下 ...
- Azure MySQL PaaS (3) 创建MySQL异地只读数据库 (Master-Slave)
<Windows Azure Platform 系列文章目录> Azure MySQL PaaS服务提供异地只读的功能,我们可以在主站点,比如Azure上海数据中心,创建MySQL主节点. ...
- 详细介绍Java虚拟机(JVM)
1. JVM生命周期 启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例 ...
- Teacher implements java.io.Serializable
package JBJADV003; public class Teacher implements java.io.Serializable{ private String name; privat ...
- C#将datatable的某一列转换成json格式的字符串
将datatable的某一列转换成json格式的字符串(转换完后自己在字符串前后加{}) /// <summary> ///DataTable装换 Column数据 组合成json 现在的 ...