关于代码说明:本人非计算机专业,也非程序猿,只是对python比较感兴趣,在明确相关原理后利用python自动化流程来代替我们需要手动完成的相关事项,代码为GPT生成基础上修改整合而来,相比专业程序猿所写肯定相差甚远,因此代码只能保证基本逻辑正确,运行中也会存在bug,本人未做专业测试。所分享代码和相关文件仅供个人测试,禁止商业行为,一切与商业有关违法行为与本人无关。
一、无法获得数据的可能原因
上两篇文章有最终的组播获取节目的代码和打包的可执行exe程序:
最后更新代码:如何利用python爬取暴露在网络中的组播节目并自动测试保存
如何将写好的python代码打包成可执行exe文件——组播节目获取Windows程序文件来了
有粉丝反应无法获取数据,可能原因1、本来没有数据。2、增加搜索地区时未按照rtp文件夹下的文件格式,放入对应的文件。3、对应搜索的运营商值和fofa的org值不匹配,因此无法获取相应的数据。在此感谢@BRAVO 提出的问题点:

在此也说明一下如何修改代码:
首先说明一下程序流程是:我们通过读取rtp文件夹下的文件名 省份_运营商.txt ,读取省份名赋值给province,运营商赋值给isp,根据isp来设定fofa的查询语法的组织的值,即org的值。
因为fofa公共查询不支持模糊查询:

如果可以使用模糊查询理论上可以用这样的查询语法:org *= “China Unicom” 来查询组织包含 china unicom即中国联通的结果。
因此我们查询运营商时只能通过 org 精确查询,那么我们怎么找到该地区需要的org值呢,可以参考查询语句,以查询北京联通的org值为例:
在fofa网站输入如下语句查询,
“china unicom” && country=”CN” && region=”Beijing”

找到北京联通的org值为:China Unicom Beijing Province Network
当然可能不只包含这个,我们可以设定这个来做为查询放入代码相应位置。
原代码:
# 根据不同的 isp 设置不同的 org 值org = "Chinanet"if isp == "电信":isp_en = "ctcc"org = "Chinanet"elif isp == "联通":isp_en = "cucc"org = "CHINA UNICOM China169 Backbone"else:org = ""
可修改代码为:
# 根据不同的 isp 设置不同的 org 值if province == "北京" and isp == "联通":isp_en = "cucc"org = "China Unicom Beijing Province Network"elif isp == "联通":isp_en = "cucc"org = "CHINA UNICOM China169 Backbone"elif isp == "电信":org = "Chinanet"isp_en = "ctcc"elif isp == "移动":org == "China Mobile communications corporation"isp_en = "cmcc"如添加其他新的地区运营商org值可以参照添加北京联通的org值的格式继续添加条件语句即可。
二、修改后代码打包exe文件
参照前面文章即可
如何将写好的python代码打包成可执行exe文件——组播节目获取Windows程序文件来了
这里就不再打包了。
三、题外
其他类似fofa的空间测绘还有,使用方法差不多:
https://quake.360.net/
https://www.zoomeye.org/
有兴趣可以研究在这里查询我们想要的数据。
这几天在研究如何从http://tonkiang.us这个iptv搜索爬取想要的数据下来,还没成功,后面再考虑更新。
欢迎扫码关注本公众号,后台发消息给我,我会即时进行回复的哦。
