fofa自动化爬虫脚本更新+详解
fofa自动化爬虫脚本更新+详解
起因
最近要用到fofa爬虫
,为什么要用爬虫不用api
,问就是穷,想起来之前写过一个相关的脚本:Fofa-python-脚本,是很久以前写的了,之前写的时候有点问题,昨天重新修改了一下,记录一下整个过程
关于fofa
在其他大佬博客上摘抄的FOFA简介及使用教程
FOFA 是白帽汇推出的一款网络空间搜索引擎,它通过进行网络空间测绘,能够帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析、应用分布统计、应用流行度等。
FOFA 搜索引擎检索到的内容主要是服务器,数据库,某个网站管理后台,路由器,交换机,公共ip的打印机,网络摄像头,门禁系统,Web服务 ……
FOFA 这类搜索引擎又有另一个名字:网络空间测绘系统。—— 它们就像是现实生活中的卫星地图那样,一点点勾勒出公共网络空间的样子,每一个网站、每一台公共环境下的服务器……当一个高危漏洞爆发,FOFA系统便能向卫星定位地址一样,通过特征迅速找到全网的脆弱设备。
网站:https://fofa.so/ FOFA不仅提供了在线搜索还提供了FOFA Pro客户端版本
简单来说就是跟国外的shodan
,国内的ZoomEye
一样是网络空间测绘工具
流程
登陆 -> 输入关键字 -> 爬取 -> 保存
登陆
登陆流程比较复杂,为了简单暴力直接使用Authorization
,每次使用时需要在 config.py
文件中修改 Authorization
值
此外config.py
里面还存储了一些全局的配置信息
输入关键字
在页面输入我们需要查找的关键字,例如 aaa
跳转网页为:https://fofa.so/result?q=aaa&qbase64=YWFh&file=&file=
可以看出来qbase64
是关键字base64
的编码,经过测试只需要这两个关键字即可进行搜索
https://fofa.so/result?page=&qbase64=
page
为页码,qbase64
为关键字的base64编码
关键字转base64
编码关键代码如下
searchbs64 = quote(str(base64.b64encode(config.SearchKEY.encode()), encoding='utf-8'))
使用quote
对URL进行编码,防止出现错误
爬取
使用正则表达式显示该关键字在fofa
中一共有多少页
pagenum = re.findall('>(\d*)</a> <a class="next_page" rel="next"', html)print("该关键字存在页码: "+pagenum)
先让用户确定爬取的开始和结束页码
config.StartPage=input("请输入开始页码:\n")config.StopPage=input("请输入终止页码: \n")
使用xpath
提取页面url
# urllist=tree.xpath('//span[@class="aSpan"]//@href')# urllist = [value.strip('\n').strip(' ').strip('\n') for value in urllist if len(value.strip('\n').strip(' ').strip('\n')) != 0]pattern = re.compile('"link":"(.*?)",')urllist = re.findall(pattern, rep.text)print(urllist)
保存
保存在 hello_world.txt
文件中
doc = open("hello_world.txt", "a+")for i in range(int(config.StartPage),int(pagenum)):print("Now write " + str(i) + " page")rep = requests.get('https://api.fofa.so/v1/search?qbase64=' + searchbs64+"&full=false&pn="+str(i)+"&ps=10", headers=config.headers)# tree = etree.HTML(pageurl.text)# urllist=tree.xpath('//span[@class="aSpan"]//@href')# urllist = [value.strip('\n').strip(' ').strip('\n') for value in urllist if len(value.strip('\n').strip(' ').strip('\n')) != 0]pattern = re.compile('"link":"(.*?)",')urllist = re.findall(pattern, rep.text)print(urllist)for j in urllist:print(j)doc.write(j+"\n")if i==int(config.StopPage):breaktime.sleep(config.TimeSleep)doc.close()
完成
END
全部代码放在 github
上:https://github.com/Cl0udG0d/Fofa-script
EOF
fofa自动化爬虫脚本更新+详解相关推荐
- python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...
- python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...
- 【elasticsearch】Elasticsearch 7.X Scripting 脚本使用详解
1.概述 转载:Elasticsearch 7.X Scripting脚本使用详解 0.题记 除了官方文档,其他能找到的介绍Elasticsearch脚本(Scripting)的资料少之又少. 一方面 ...
- [Unity2018.2]ShaderGraph更新详解
洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录). ShaderGraph 2018.2 更新详解 在2018.1 ...
- rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区
linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...
- python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)
本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...
- Android自动化大讲堂34--终极自动化框架UIAutomator使用详解
<深入理解Android自动化测试> 又双叒叕重印咯!!! 无以为报,只能改版得更漂亮一点来答谢各位的厚爱! 好了,废话少说,咱们开始吧! 终极自动化框架UIAutomator使用详解 注 ...
- 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]
文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...
- 爬虫之Xpath详解
爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素, ...
最新文章
- php yii orm,Yii中的sql查询的位置(或任何支持ORM的框架)?
- 如何编写服务器文档记录
- 在IDEA中为项目引入maven中央仓库中的依赖包
- Flink从入门到精通100篇(一)-如何在Mac 上搭建 Flink环境并做简单测试
- Android日期分组,按查询分组在列表视图android中显示一些意...
- rust(69)-闭包
- 设计一个简单的缓存容器
- Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...
- cuda加速的头文件_如何从C ++头文件调用CUDA文件?
- 防止数据中心停机需要采取什么措施
- 极光开发者周刊【No.0827】
- 史上最全股票指标图文详解(原创)
- 华为机试:VLAN资源池
- excel 删除大量空白行
- USB key身份认证介绍
- 用x360ce,北通蓝牙手柄成功玩双人成行
- 外汇EA是什么?外汇EA有什么用呢?能赚钱吗?
- 少儿编程微课程10:使用画笔绘制正六边形
- BZOJ P1189[HNOI2007]紧急疏散evacuate
- 油价小程序开发 - 手把手教你写小程序(适合初学者)
热门文章
- mysql存储过程语法 if_mysql存储过程语法 if
- python string 方法,python字符串的方法与操作大全
- 【数字信号处理】分贝的概念及其日常使用中常见的错误
- 【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)
- Windows10+VS2017下GSL1.8_x86和sundials2.5.0配置及GITHUB项目schneider_et_al_2016_animaldiversity编译运行
- (3.4)HarmonyOS鸿蒙滑动事件三个动作
- 三句话介绍清楚滑动窗口协议/GBN/SR
- sudo 命令报错的解决方法
- what??|诞生才一年的BCH竟面临硬分叉的抉择
- Android View相关知识点