最近研究py。找到的一个批量处理域名成顶级域名的一个小脚本分享给各位老哥

2022-01-02 21:30:54 5 9257
最近想写个自动化工具。因为想要配合oneforall 所以 必须将收集到的域名处理成顶级域名。其实是想自己写的,可真是写起来才知道还是比较难处理的。于是想着网上找找看有没有前辈写好的,找到个靠谱的小脚本,已经忘了具体出处了   这种数据处理可真是难搞啊,看了前辈写的代码才算是明白了思路了
代码直接贴出来
path=r'xxxxx' #当前路径
readfilename="indomain.txt"
writefilename="outdomain.txt"
alldomainend=(".com", ".cn", ".com.cn", ".gov", ".net", ".edu.cn", ".net.cn", ".org.cn", ".co.jp", ".gov.cn",
                                        ".co.uk", "ac.cn", ".edu", ".tv",".info", ".ac", ".ag", ".am", ".at", ".be", ".biz", ".bz",
                                        ".cc", ".de", ".es", ".eu", ".fm", ".gs", ".hk", ".in", ".info", ".io", ".it", ".jp", ".la",
                                        ".md", ".ms", ".name", ".nl", ".nu", ".org", ".pl", ".ru", ".sc", ".se", ".sg", ".sh", ".tc",
                                        ".tk", ".tv", ".tw", ".us", ".co",".uk", ".vc", ".vg", ".ws", ".il", ".li", ".nz" )

#倒叙输出字符串
def string_reverse(m):
    num = len(m)
    a = []
    for i in range(num):
        a.append(m[num - 1 - i])  # 从最后一位的元素开始往新list内添加元素
    return a

def checkTopDomain(pDomain):
    tmpDomain="".join(pDomain)
    for i in alldomainend:
        if i==tmpDomain:
            return True
    return False

def GetTopDomain(pDomain):
    tmpDomain=pDomain.decode()
    reversestr=string_reverse(tmpDomain)
    n = len(reversestr)
    i = 0
    tmpbuf=''
    for i in range(n):
        if reversestr[i] !='.':
            if reversestr[i] !='/':
                tmpbuf+=reversestr[i]
                #print( tmpbuf)
            else:
                rebuf = string_reverse(tmpbuf)
                #print(rebuf)
                return (rebuf)
        else:
            tmpbuf+='.'
            rebuf=string_reverse(tmpbuf)
            if checkTopDomain(rebuf) ==False:
                #print(rebuf[1:])
                return rebuf[1:]
    return list(tmpDomain)


print("GetTopDomain start")

rfile=open(path+readfilename,'rb')
wfile=open(path+writefilename,'a')
line=rfile.readline()
while line:
    nline = line.split( )
    rDomain=nline[0]
    strreturn="".join(GetTopDomain(rDomain))
    #print(type(strreturn))
    wfile.writelines(strreturn)
    wfile.write('\n')
    line = rfile.readline()

print("GetTopDomain end")
rfile.close()
wfile.close()
这小代码写的真挺漂亮的。可以批量的处理各式各样的域名成顶级域名,但是ip类的不行。贴给各位师傅瞧瞧。

关于作者

zhangzhi4514篇文章37篇回复

评论5次

要评论?请先  登录  或  注册
  • TOP1
    2022-1-3 02:56

    有点水,一个tldextract库搞定的事

    #!/usr/bin/python# -*- coding: UTF-8 -*-import linecache, sys, os, tldextractreload(sys)sys.setdefaultencoding('utf-8')readfilename = linecache.getlines("{}/indomain.txt".format(sys.path[0]))writefilename = "{}/outdomain.txt".format(sys.path[0])out = []for i in readfilename:  urls = tldextract.extract(i)  out.append("{0}.{1}".format(urls.domain, urls.suffix))S='\n'.join(str(num) for num in out) + '\n'open(writefilename,'w').write(S)

  • 5楼
    2022-1-13 09:52

    我最近因为工作需要,在网上找到了一个提取顶级域名+统计重复域名的脚本。正则表达式复杂,表示学不会。

  • 4楼
    2022-1-4 11:01

    https://seo.juziseo.com/tools/domain/ 这个网站可以从url中提取出主域名来

  • 3楼
    2022-1-3 20:38

    http://tools.bugscaner.com/urlstourls.html 这个网站很方便各种小工具,里面就有提取URL的页面。还可以指纹

  • 2楼
    2022-1-3 02:56

    有点水,一个tldextract库搞定的事

    #!/usr/bin/python # -*- coding: UTF-8 -*- import linecache, sys, os, tldextract reload(sys) sys.setdefaultencoding('utf-8')  readfilename = linecache.getlines("{}/indomain.txt".format(sys.path[0])) writefilename = "{}/outdomain.txt".format(sys.path[0]) out = [] for i in readfilename:     urls = tldextract.extract(i)     out.append("{0}.{1}".format(urls.domain, urls.suffix)) S='\n'.join(str(num) for num in out) + '\n' open(writefilename,'w').write(S)

  • 1楼
    2022-1-3 00:45

    这个py有一个专门提取顶级域名的模块,百度一下就有了,老哥还是很强!