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 相关文章推荐
windows下安装python paramiko模块的代码
Feb 10 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
python连接数据库的方法
Oct 19 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
浅谈dataframe中更改列属性的方法
Jul 10 Python
python自动识别文本编码格式代码
Dec 26 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
python为什么会环境变量设置不成功
Jun 23 Python
python数据抓取3种方法总结
Feb 07 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
Pytorch 如何实现LSTM时间序列预测
May 17 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多种序列化与反序列化的方法
2013/06/06 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
如何使用jquery easyui创建标签组件
2015/11/18 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
Python如何爬取51cto数据并存入MySQL
2020/08/25 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
python装饰器代码深入讲解
2021/03/01 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
初中班主任评语大全
2014/04/24 职场文书
需求分析说明书
2014/05/09 职场文书
党员违纪检讨书
2015/05/05 职场文书
小学毕业感言200字
2015/07/30 职场文书
element tree树形组件回显数据问题解决
2022/08/14 Javascript
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript