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中的__getitem__专有方法
Jun 27 Python
详解Python中的array数组模块相关使用
Jul 05 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
python绘制直线的方法
Jun 30 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
在python中实现对list求和及求积
Nov 14 Python
python导入模块交叉引用的方法
Jan 19 Python
Python选择网卡发包及接收数据包
Apr 04 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
Python telnet登陆功能实现代码
Apr 16 Python
浅谈Python中的模块
Jun 10 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将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
PHP实现多文件上传的方法
2015/07/08 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
大家未必知道的Js技巧收藏
2008/04/07 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
纯JS实现五子棋游戏
2020/05/28 Javascript
python正则表达式的使用
2017/06/12 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
Numpy中的mask的使用
2018/07/21 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
介绍下Java中==和equals的区别
2013/09/01 面试题
2014年党务公开实施方案
2014/02/27 职场文书
保护水资源的标语
2014/06/17 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
2019广播稿怎么写
2019/04/17 职场文书
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技