xray子域名扫描结果导出
时间:2022-07-26
本文章向大家介绍xray子域名扫描结果导出,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
介绍
众所周知xray
是可以进行子域名爆破、查询的,但是导出来的是html
,不利于我部署自动化任务
而且出来的结果,有的是类似泛解析一样的,比如访问a网页会跳转到c网页,访问b网页也会跳转到c网页,c网页是专门用来处理访问不到页面后跳转的,所以专门写了个脚本来导出,并且清理数据
这个脚本只导出http状态码为200的,有需要可以自行添加
正文
先导入所需要的库
import sys
import re
import os
import time
import requests
首先获取文件名
...
#判断是否存在文件名
try:
filename = sys.argv[1]
#w_filename=sys.argv[2]
except:
print("Usage: python Elapse.py <subdomain file> #d<saved file name>")
time.sleep(3)
sys.exit(0)
xray中查询子域名导出的html,一份只能有500个子域名,多了的话,就会新保存一个文件,并且命名500-filename.html
,每次多500
所以写一个自动往下查询的
#检测文件是否存在,并自动往后查询
def check_file(filename):
filelist=[]
#判断是否存在类似500-sub.html的格式
file_num=re.findall('(d*)-.*.html',filename)
if file_num:
num=int(file_num[0])
initfile=filename.replace(str(num)+"-",'')
else:
#如果没有,那就初始化为0
num=0
while True:
a=os.path.isfile(filename)
if a:
filelist.append(filename)
num+=500
filename=str(num)+"-"+initfile
else:
print("文件: "+filename+" 不存在,正在导出列表...")
return filelist
因为有的时候可能是从500-sub.html开始查询,所以写了个正则匹配这个格式,有的话,那就保存你当前的数字,然后下一次加500
接着开始主体
...
checkexist=check_file(filename)
num=1
for forname in checkexist:
w_filename="result-"+str(num)+".txt"
sub_file = open(forname,"r",encoding="utf-8")
write_file=open(w_filename,"a",encoding='UTF-8')
保存的文件也理所当然的需要用变
...
#sub用于判断是否重复
sub=[]
for i in sub_file:
# 无脑匹配url和状态码和title
result=re.findall(r'{"link":"(.*?)","status":(.*?),"title":"(.*?)","server',i)
try:
url=result[0][0]
http_code=result[0][1]
title=result[0][2]
if http_code != "200":
print("状态码非200,正在跳过处理...")
continue
repeat=findurl(url)
if repeat in sub:
print("检测到302跳转后类似泛解析,正在跳过处理...")
else:
sub.append(repeat)
write_file.write(url+"n")
print("成功写入一条数据...")
print("url: "+url+" code: "+http_code+" title: "+title)
except:
print("这行未检测到内容...")
#traceback.print_exc()
pass
sub_file.close()
write_file.close()
num+=1
github:https://github.com/Ernket/xray_subdomain_export
最后祝各位中秋节、国庆节快乐
- 我的第四个网页制作:列表标签
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp
- 虎嗅主站盲打成功(已进后台)
- 我的第五个网页制作:pre、html转义、abbr标签的使用
- UVALive 3882 - And Then There Was One【约瑟夫问题】
- 超级账本项目:链码示例
- 我的第六个网页制作:table标签
- POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】
- UVA 11039-Building designing【贪心+绝对值排序】 UVA11039-Building designing
- UVA 11636-Hello World!(水题,猜结论) UVA11636-Hello World!
- 百度某SDK设计缺陷导致手机敏感信息泄露(IMEI号和地理位置信息等)
- HDU 1004 Let the Balloon Rise【STL<map>】
- UVA 10881 - Piotr's Ants【模拟+思维】
- DFS中的奇偶剪枝学习笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python opencv】轮廓更多属性
- Gin 学习之安装和快速启动
- 给兄弟讲bitCoins和blockchain
- Gin 学习之响应处理
- 【python opencv】直方图查找、绘制和分析
- Gin 学习之接收参数和读取 reader
- 【python opencv】二维直方图
- 序列检测一定要用状态机?
- 【python opencv】直方图反投影
- 【python opencv】模板匹配
- 【python opencv】霍夫变换
- python动态柱状图图表可视化:历年软科中国大学排行
- 【MSQL数据库】MySQL中的NULL
- sklearn自带的数据集以及生成数据
- elaticserch的索引