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中global与nonlocal比较
Nov 21 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python程序中设置HTTP代理
Nov 06 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
一道python走迷宫算法题
Jan 22 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
django rest framework 自定义返回方式
Jul 12 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
PyTorch预训练Bert模型的示例
Nov 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 更新数据库中断的解决方法
2009/06/05 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
JavaScript中的类与实例实现方法
2015/01/23 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
python的类方法和静态方法
2014/12/13 Python
PYTHON 中使用 GLOBAL引发的一系列问题
2016/10/12 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
python实现滑雪者小游戏
2020/02/22 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
浅析NumPy 切片和索引
2020/09/02 Python
HTTP状态码详解
2021/03/18 杂记
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
物流专业大学应届生求职信
2013/11/03 职场文书
厨房工作人员岗位职责
2013/11/15 职场文书
中专毕业生自荐信
2013/11/16 职场文书
大学军训感言
2014/01/10 职场文书
大学生职业规划论文
2014/01/11 职场文书
优秀部门获奖感言
2014/02/14 职场文书
财务总经理岗位职责
2014/02/16 职场文书
大学生工作求职信
2014/06/23 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
SpringBoot+Vue+JWT的前后端分离登录认证详细步骤
2021/09/25 Java/Android
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python