python爬虫_自动获取seebug的poc实例


Posted in Python onAugust 05, 2017

简单的写了一个爬取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 相关文章推荐
python从ftp下载数据保存实例
Nov 20 Python
Python文件去除注释的方法
May 25 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
老生常谈python的私有公有属性(必看篇)
Jun 09 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
基于anaconda下强大的conda命令介绍
Jun 11 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
python GUI实现小球满屏乱跑效果
May 09 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
python遍历路径破解表单的示例
Nov 21 Python
python中的break、continue、exit()、pass全面解析
Aug 05 #Python
Python基于递归算法实现的走迷宫问题
Aug 04 #Python
Python实现的科学计算器功能示例
Aug 04 #Python
Python中用字符串调用函数或方法示例代码
Aug 04 #Python
Python编程实现的图片识别功能示例
Aug 03 #Python
详解python实现读取邮件数据并下载附件的实例
Aug 03 #Python
详解 Python中LEGB和闭包及装饰器
Aug 03 #Python
You might like
基于mysql的论坛(5)
2006/10/09 PHP
php自动获取目录下的模板的代码
2010/08/08 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
django 控制页面跳转的例子
2019/08/06 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python设置环境变量的作用整理
2020/02/17 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
办公室年终个人自我评价
2013/10/28 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
毕业设计论文评语
2014/12/31 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang