前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xray子域名扫描结果导出

xray子域名扫描结果导出

作者头像
Elapse
发布2020-10-10 17:06:16
3.1K0
发布2020-10-10 17:06:16
举报
文章被收录于专栏:E条咸鱼E条咸鱼

介绍

众所周知xray是可以进行子域名爆破、查询的,但是导出来的是html,不利于我部署自动化任务

而且出来的结果,有的是类似泛解析一样的,比如访问a网页会跳转到c网页,访问b网页也会跳转到c网页,c网页是专门用来处理访问不到页面后跳转的,所以专门写了个脚本来导出,并且清理数据

这个脚本只导出http状态码为200的,有需要可以自行添加

正文

先导入所需要的库

代码语言:javascript
复制
import sys
import re
import os
import time
import requests

首先获取文件名

代码语言:javascript
复制
...
#判断是否存在文件名
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

所以写一个自动往下查询的

代码语言:javascript
复制
#检测文件是否存在,并自动往后查询
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

接着开始主体

代码语言:javascript
复制
...
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')

保存的文件也理所当然的需要用变

代码语言:javascript
复制
...
    #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

最后祝各位中秋节、国庆节快乐

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 E条咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 正文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档