【问题标题】:How to obtain second level domains under the ".uk" ccTLD如何获得“.uk”ccTLD下的二级域名
【发布时间】:2016-12-30 17:34:50
【问题描述】:

我有“.uk”国家代码顶级域名。我想检索它下所有二级域的列表。我尝试使用包含不同字母组合和长度的 StringBuilder(例如 aa.uk-zz.uk、aaa.uk-zzz.uk)[代码在下面列出]。为了测试它,我最初计划使用 Whois 类。但是经过几次测试,我得到了“超出配额”的回复。所以我放弃了这种可能性,因为每个 IP 地址都有一定的限制。是否可以访问和检索 DNS 名称服务器的二级域列表?如果是这样,请指导我如何在java中做到这一点。

`

公共类生成域 {

public static void genDomain(int iDomainLength, String sPredecessor,int iSubLevel) {

    //===========DECLARATIONS==============
    char[] arr_charAlphabets;
    String sDiffcombinations="";
    int[] arr_iPosition;
    int iTotalPossibilities;
    StringBuilder sBuilderComb;
    //==========END OF DECLARATIONS========


    //===========START OF ARRAY BUILDER===================
    //Build an array of characters storing all alphabets
    //a(97)-z(122) - lowercase only
    arr_charAlphabets = new char[26];
    for(int iIterator=97;iIterator<=122;iIterator++){
        arr_charAlphabets[iIterator-97] = (char) iIterator;
    }
    //===========END OF ARRAY BUILDER======================

    //===========START OF TEMPLATE BUILDER=================
    //This portion builds a template of <spaces> and
    //these <spaces> will be replaced with alphabets
    for(int iIterator=1;iIterator<=iDomainLength;iIterator++){
        sDiffcombinations+=" ";
    }
    //===========END OF TEMPLATE BUILDER===================
    sBuilderComb = new StringBuilder(sDiffcombinations);

    arr_iPosition = new int[iDomainLength];
    iTotalPossibilities = (int) Math.pow(26, iDomainLength);


    for (int iIterator1 = 0; iIterator1 < iTotalPossibilities; iIterator1++){

        for (int iIterator2 = 0; iIterator2 < iDomainLength; iIterator2++){

            if (arr_iPosition[iIterator2] == arr_charAlphabets.length){
                arr_iPosition[iIterator2] = 0;
                if (iIterator2 + 1 < iDomainLength) {
                    arr_iPosition[iIterator2 + 1]++;
                }
            }

            sBuilderComb.setCharAt(iIterator2, arr_charAlphabets[arr_iPosition[iIterator2]]);
        }

        arr_iPosition[0]++;
        //======================================================
        System.out.println(sBuilderComb.toString()+sPredecessor);

    }


}

public static void main(String[] args) {
    genDomain(2, ".uk", 1);
    System.out.println("Combinations of length 2 generated");
}

}

`

【问题讨论】:

  • 现在只有一个问题 - 为什么?
  • 这是大学里的一个项目
  • 我也认为你可以做一个网络爬虫来获取 .uk 子域的列表,生成域似乎不是一个可行的选择,因为它们有几十个
  • @BorysZibrov 网络爬虫是否保证所有二级域都会被发现?

标签: java networking dns


【解决方案1】:

首先,尝试暴力破解一个区域中的所有名称是一种高度反社会的行为,会将您列入黑名单。立即停止尝试。

其次,你说你是为一个大学项目做这个。在这种情况下,您应该真正在编写另一个字符的源代码之前了解 DNS 的工作原理。学习是你上大学的首要原因,对吧?

第三,获取他人信息的正确方法是不要试图违背他们的意愿从他们那里窃取信息(就像你现在所做的那样)。正确的方法是请他们很好地给你,并准备好他们可能需要赔偿才能给你。对于UK ccTLD,“他们”是Nominet。您在此处回答问题所需的所有信息都可以在他们的网站上找到。

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多