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中OrderedDict的使用方法详解
May 05 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
Python常用数字处理基本操作汇总
Sep 10 Python
Python 实现键盘鼠标按键模拟
Nov 18 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP 图片上传代码
2011/09/13 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
制作个性化的WordPress登陆界面的实例教程
2016/05/21 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
Js动态创建div
2008/09/25 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python爬虫获取多页天涯帖子
2018/02/23 Python
详解Python中的动态属性和特性
2018/04/07 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python 深度学习中的4种激活函数
2020/09/18 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
2014年秋季开学演讲稿
2014/05/24 职场文书
小学运动会报道稿
2015/07/22 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
Python数据结构之队列详解
2022/03/21 Python