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自动化爬虫脚本更新+详解相关推荐

  1. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 要求是把你所在城市过去一年的历史数据爬出来. 分析网站 我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有 ...

  2. python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  3. 【elasticsearch】Elasticsearch 7.X Scripting 脚本使用详解

    1.概述 转载:Elasticsearch 7.X Scripting脚本使用详解 0.题记 除了官方文档,其他能找到的介绍Elasticsearch脚本(Scripting)的资料少之又少. 一方面 ...

  4. [Unity2018.2]ShaderGraph更新详解

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录). ShaderGraph 2018.2 更新详解 在2018.1 ...

  5. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区

    linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...

  6. python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  7. Android自动化大讲堂34--终极自动化框架UIAutomator使用详解

    <深入理解Android自动化测试> 又双叒叕重印咯!!! 无以为报,只能改版得更漂亮一点来答谢各位的厚爱! 好了,废话少说,咱们开始吧! 终极自动化框架UIAutomator使用详解 注 ...

  8. 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]

    文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...

  9. 爬虫之Xpath详解

    爬虫之Xpath详解 XPath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素, ...

最新文章

  1. php yii orm,Yii中的sql查询的位置(或任何支持ORM的框架)?
  2. 如何编写服务器文档记录
  3. 在IDEA中为项目引入maven中央仓库中的依赖包
  4. Flink从入门到精通100篇(一)-如何在Mac 上搭建 Flink环境并做简单测试
  5. Android日期分组,按查询分组在列表视图android中显示一些意...
  6. rust(69)-闭包
  7. 设计一个简单的缓存容器
  8. Android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能...
  9. cuda加速的头文件_如何从C ++头文件调用CUDA文件?
  10. 防止数据中心停机需要采取什么措施
  11. 极光开发者周刊【No.0827】
  12. 史上最全股票指标图文详解(原创)
  13. 华为机试:VLAN资源池
  14. excel 删除大量空白行
  15. USB key身份认证介绍
  16. 用x360ce,北通蓝牙手柄成功玩双人成行
  17. 外汇EA是什么?外汇EA有什么用呢?能赚钱吗?
  18. 少儿编程微课程10:使用画笔绘制正六边形
  19. BZOJ P1189[HNOI2007]紧急疏散evacuate
  20. 油价小程序开发 - 手把手教你写小程序(适合初学者)

热门文章

  1. mysql存储过程语法 if_mysql存储过程语法 if
  2. python string 方法,python字符串的方法与操作大全
  3. 【数字信号处理】分贝的概念及其日常使用中常见的错误
  4. 【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)
  5. Windows10+VS2017下GSL1.8_x86和sundials2.5.0配置及GITHUB项目schneider_et_al_2016_animaldiversity编译运行
  6. (3.4)HarmonyOS鸿蒙滑动事件三个动作
  7. 三句话介绍清楚滑动窗口协议/GBN/SR
  8. sudo 命令报错的解决方法
  9. what??|诞生才一年的BCH竟面临硬分叉的抉择
  10. Android View相关知识点