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实现发送和获取手机短信验证码
Jan 15 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
Python3 queue队列模块详细介绍
Jan 05 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
详解python中init方法和随机数方法
Mar 13 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
关于PyTorch 自动求导机制详解
Aug 18 Python
Python发送手机动态验证码代码实例
Feb 28 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
Python排序函数的使用方法详解
Dec 11 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 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中文本操作的类
2007/03/17 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
Python制作简单的网页爬虫
2015/11/22 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python查看数据类型的方法
2019/10/12 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
Python新手学习raise用法
2020/06/03 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
实习自我鉴定范文
2013/10/30 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
给市场的环保建议书
2014/05/14 职场文书
对学校的意见和建议
2015/06/04 职场文书