原文链接:http://www.blackh4t.org/archives/911.html
附上下载脚本(从当前目录中的txt文件中读取资源的下载URL信息然后使用wget进行下载,并分别放到各个目录中):
# By notsobad <—– thx this dude
# By notsobad <—– thx this dude
for i in *.txt;do mkdir ${i%.txt} ; ( cd ${i%.txt} && wget -i ../$i --no-check-certificate ); done
转个Pyhton下载脚本的文章:
- 首先,去汇总页面,使用Python脚本获取其中所有paper的链接信息存入一文本文件中(这个其实也可以分为:1.从汇总页面获取每一年演讲的链接;2.从每一年的链接中获取所有paper的链接信息);
- 然后,将汇总出的所有txt文件放入一个目录中,执行上面的那个shell脚本,即可进行批量下载。
获取paper下载链接的Python脚本如下:
#!/usr/bin/env python # coding=utf-8 #-------author:Scr@t------- #----filename:spider.py---- import sys import urllib2 import re import HTMLParser class myparser(HTMLParser.HTMLParser): def __init__(self): HTMLParser.HTMLParser.__init__(self) def handle_starttag(self,tag,attrs): if (tag == 'a'): URL = '' for name,value in attrs: if (name == 'href'): for xx in ['pdf','ppt','pptx','zip','rar']: val = value.find(xx)#所要下载的文件类型 if val != -1: fp.write(value + 'n') if len(sys.argv)>=2 and sys.argv[1] == '-u': content = (urllib2.urlopen(sys.argv[2])).read()#打开网址并读取内容 fp = open("URL.list",'w') con = myparser() con.feed(content)#把content的内容,传给myparser分析 else: print 'Usage:%s -u url'%sys.argv[0]
稍微改了下脚本使其能够更好运行。
========
对那个批量下载的shell命令组合做个解释:
for i in *.txt;do mkdir ${i%.txt} ; ( cd ${i%.txt} && wget -i ../$i --no-check-certificate ); done #上面的这一句话起到的作用是,遍历当前目录下所有的txt文件,根据txt文件名创建同名文件夹,然后根据各txt文件内容中指定的URL下载相应资源 #细分每个命令的作用如下 for i in *.txt;do mkdir ${i%.txt}; #取txt文件名来创建目录 ( cd ${i%.txt} && wget -i ../$i --no-check-certificate ); #切换到对应目录并使用wget进行下载(-i选项指定从本地/外部文件中读取URL信息,另一个选项指定不进行检查) done
《 “[转]Blackhat历年paper整理” 》 有 16 条评论
您好,我在使用python spider.py -u https://www.blackhat.com/html/archives.html
命令后,没有txt文件,只有一个URL.list,这是什么情况呢?
能给予解答么?
使用Windows+cygwin+python2.7.8
你好,可能我的结构没有组织好,误导了你:
如果直接用上面的Python脚本的话,最后得到的应该是一个URL.list文件,里面是资源的链接(第26行给文件取的名字);
另外一个shell脚本其实是用来方便下载的(txt文件内容为资源链接)还没有整合到一起。
所以,如果已经得到了URL.list文件,直接使用命令:wget -i URL.list 即可批量下载。
了解。确实理解错了。十分感谢。
刚刚开始用Python做爬虫,正巧我也在搜索黑帽大会的资料,谢谢你的文章,另外,你的博客很不错,我就没有坚持下来。
另外有个搜集安全会议的网站的wiki推荐,www.secdocs.org
另外,谢谢你的推荐,我更新到了之前写的一篇笔记:安全漏洞公共资源库[bak] http://ixyzero.com/blog/archives/308.html
写爬虫的时候多分析一下页面的情况,然后进行对应修改即可找出解决办法。
好的。不客气。也十分感谢你。我尝试一下
嗯,下载了一个2014年的,如果我只想要URL.list列出信息,如何能够让其输出的格式整齐呢?是使用正则表达式么?(不知道对不对)
没懂你的意思,直接用脚本获取的URL.list文件内容格式如下:
../docs/us-14/materials/us-14-Saxe.pdf
../docs/us-14/materials/us-14-Saxe-Tool.zip
你可以查看该页面的源代码知道有对应的:
…… href=”../docs/us-14/materials/us-14-Saxe.pdf” ……
然后你对sys.argv[2]和匹配出的value进行字符串/列表切片处理之后,拼接即可获取完整/整齐的URL地址了。本文中使用的是HTMLParser获取URL,你也可以用正则的方式,但效果基本相同。
我要出门一趟,无法及时回复,你自己多试试吧,该说的我认为都说的差不多了,实际动手的话印象会深刻些。
额。好的。我试下。
第26行是 fp = open(“URL.list”,’w’)这里么,请问如何修改呢?
按照方法做了,为什么产生的URL.list文件是0字节的呢?
是哪里出错了么?
因为在http://www.blackhat.com/html/archives.html 这个页面里面并没有资源的下载地址,这个页面相当于是个导航页面,比如说你要下载USA 2014年大会上的资源,你可以进入 http://www.blackhat.com/us-14/archives.html 页面,然后再运行的话URL.list文件中的内容大致如下:
../docs/us-14/materials/us-14-Valtman-A-Journey-To-Protect-Point-Of-Sale.pdf
../docs/us-14/materials/us-14-Brodie-A-Practical-Attack-Against-VDI-Solutions-WP.pdf
……
因为该页面使用的是相对地址,不过你可以在Python脚本中修改or对已经生成的URL.list文件进行修改,然后再用wget下载即可。
安全相关会议列表
https://github.com/cryptax/confsec
如何用Python批量提取PDF文本内容?
https://www.jianshu.com/p/31939ee6f1c9
Openwall 开放 2001 to 2018 年间的演讲议题
http://www.openwall.com/presentations/
BlackHat USA 2020 资料爬虫最佳姿势与打包下载
https://mp.weixin.qq.com/s/UvTsh2GdytglxzB3mCWdzA
`
现在BlackHat官网的ppt下载真是麻烦,不再像以前放在一页里面直接显示,而是在议题列表里面,一个个点进去翻看才能下载。
这种事真要一个个去下载,近百个议题,你得下到手软。
不搞个爬虫去自动化下载,都对不起攻城师的头衔。
原本是想用scrapy写个python脚本去批量下载,后来决定用更加高效的方法:使用Web Scraper这个Chrome插件,通过点鼠标就可解决,无需编写代码。可直接在浏览器里面模拟网页浏览与操作,可以有效绕过一些反爬虫机制。
将爬虫结果导出csv,用命令行批量下载就可以了。
`
https://github.com/riusksk/SecConArchive/tree/master/BlackHat/BlackHat_USA_2020