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和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python的subprocess模块总结
Nov 07 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
Django打印出在数据库中执行的语句问题
Jul 25 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
django实现后台显示媒体文件
Apr 07 Python
Python  word实现读取及导出代码解析
Jul 09 Python
Python变量格式化输出实现原理解析
Aug 06 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
javascript some()函数用法详解
2014/11/13 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
pandas带有重复索引操作方法
2018/06/08 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Django-imagekit的使用详解
2020/07/06 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
转让协议书范本
2014/04/15 职场文书
新闻编辑求职信
2014/07/13 职场文书
常住证明范本
2015/06/23 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript