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的Django框架测试驱动开发的教程
Apr 22 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
python使用matplotlib画饼状图
Sep 25 Python
Python3中lambda表达式与函数式编程讲解
Jan 14 Python
python中的RSA加密与解密实例解析
Nov 18 Python
解决django接口无法通过ip进行访问的问题
Mar 27 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
python 如何停止一个死循环的线程
Nov 24 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 Python
python 使用pandas读取csv文件的方法
Dec 24 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
php 无限分类的树类代码
2009/12/03 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php分页查询的简单实现代码
2017/03/14 PHP
实例讲解PHP表单处理
2019/02/15 PHP
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
Jquery动态列功能完整实例
2019/08/30 jQuery
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
基于python的字节编译详解
2017/09/20 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python的依赖管理的实现
2019/05/14 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
python 从list中随机取值的方法
2020/11/16 Python
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
什么是GWT的Module
2013/01/20 面试题
大学生专科学习生活的自我评价
2013/12/07 职场文书
网络研修随笔感言
2014/02/17 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
财务统计员岗位职责
2015/04/14 职场文书
签约仪式致辞
2015/07/30 职场文书
基于python实现银行管理系统
2021/04/20 Python
如何利用pygame实现打飞机小游戏
2021/05/30 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python