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数据结构之Array用法实例
Oct 09 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
Nov 16 Python
Django入门使用示例
Dec 12 Python
Python扩展内置类型详解
Mar 26 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python 调试冷知识(小结)
Nov 11 Python
pytorch模型存储的2种实现方法
Feb 14 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 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/05/29 PHP
php操作mongoDB实例分析
2014/12/29 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
JS打印组合功能
2016/08/04 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Node.js中的cluster模块深入解读
2018/06/11 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
Python中datetime模块参考手册
2017/01/13 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python日志模块logbook使用方法
2019/09/19 Python
Python中bisect的用法及示例详解
2020/07/20 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
思想品德课教学反思
2014/02/10 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
MySQL 如何限制一张表的记录数
2021/09/14 MySQL