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内置函数bin() oct()等实现进制转换
Dec 30 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
python re库的正则表达式入门学习教程
Mar 08 Python
python文件选择对话框的操作方法
Jun 27 Python
pytorch 归一化与反归一化实例
Dec 31 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 Python
Python3.10的一些新特性原理分析
Sep 15 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
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
Vue实现验证码功能
2019/12/03 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python实现各种插值法(数值分析)
2019/07/30 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
python 回溯法模板详解
2020/02/26 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
2019年.net常见面试问题
2012/02/12 面试题
实习单位接收函
2014/01/11 职场文书
电钳工人个人求职信
2014/05/10 职场文书
留守儿童工作方案
2014/06/02 职场文书
微笑服务标语
2014/06/24 职场文书
2014年工人工作总结
2014/11/25 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
食堂管理制度范本
2015/08/04 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
pandas中关于apply+lambda的应用
2022/02/28 Python