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删除java文件头上版权信息的方法
Jul 31 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
Python读取xlsx文件的实现方法
Jul 04 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
Aug 12 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
Python 如何查找特定类型文件
Aug 17 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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通用防注入程序 推荐
2011/02/26 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
php表单提交实例讲解
2015/11/12 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
javascript 主动派发事件总结
2011/08/09 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js闭包的用途详解
2014/11/09 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
jQuery事件用法详解
2016/10/06 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python获取从命令行输入数字的方法
2015/04/29 Python
Python字符串详细介绍
2015/05/09 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
对Python中range()函数和list的比较
2018/04/19 Python
python中数字是否为可变类型
2020/07/08 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
大学优秀班主任事迹材料
2014/05/02 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
公司年底活动方案
2014/08/17 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
为什么node.js不适合大型项目
2021/04/28 Javascript