1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-08-24 21:42:52 4 # @Author : EnderZhou (zptxwd@gmail.com) 5 # @Link : http://www.cnblogs.com/enderzhou/ 6 # @Version : $Id$ 7 8 import requests 9 from bs4 import BeautifulSoup as bs 10 import threading 11 import Queue 12 import urllib 13 # import os 14 import time 15 16 main_url ='https://www.seebug.org/vuldb/vulnerabilities?category=&order_time=1&order_rank=1&has_all=default&has_vm=default&submitTime=all&has_affect=default&has_poc=true&has_detail=default&level=all&page='#+pagenumber 17 18 bug_url = 'https://www.seebug.org/vuldb/ssvid-'#96358 19 20 dl_url = 'https://www.seebug.org/vuldb/downloadPoc/'#96358 21 22 23 #SeeBug防爬机制教强,若仅修改cookie无效,请替换全部header头信息 24 headers = { 25 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 26 'Accept-Encoding':'gzip, deflate, br', 27 'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.6', 28 'AlexaToolbar-ALX_NS_PH':'AlexaToolbar/alx-4.0.1', 29 'Cache-Control':'max-age=0', 30 'Connection':'keep-alive', 31 'Cookie':'请填写自己的cookie', 32 'Referer':'https://www.seebug.org/vuldb/vulnerabilities', 33 'Upgrade-Insecure-Requests':'1', 34 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36', 35 } 36 37 class SeeBugPoc(threading.Thread): 38 def __init__(self,queue): 39 threading.Thread.__init__(self) 40 self._queue = queue 41 42 def run(self): 43 while not self._queue.empty(): 44 url = self._queue.get_nowait() 45 self.spidet(url) 46 47 def spidet(self,url): 48 r = requests.get(url=url,headers=headers) 49 soup = bs(r.content,'html.parser') 50 vullist = soup.find_all(name='a',attrs={'class':'vul-title'}) 51 for u in vullist: 52 name = u['href'].split('/')[-1] 53 l = dl_url+u['href'].split('-')[-1] 54 print name + '----' + l 55 d = requests.get(url=l,headers=headers) 56 f = open(name+'.txt','w') 57 f.write(d.content) 58 f.close 59 time.sleep(7.5) 60 #SeeBug防爬机制教强,此处设置延时7.5秒。后续看心情是否更新添加代理功能 61 62 def main(): 63 queue = Queue.Queue() 64 for i in range(1,2185): 65 queue.put(main_url+str(i)) 66 67 threads = [] 68 thread_count = 1 69 70 for i in range(thread_count): 71 threads.append(SeeBugPoc(queue)) 72 73 for t in threads: 74 t.start() 75 76 for t in threads: 77 t.join() 78 79 if __name__ == '__main__': 80 main()