如何获得“.uk”ccTLD下的二级域名

时间:2016-12-30 17:34:50

标签: java networking dns

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

`

公共类generateDomain {

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");
}

}

`

1 个答案:

答案 0 :(得分:0)

首先,尝试对区域中的所有名称进行暴力破解是一种极具反社会性的行为,会让您被列入黑名单。立即停止尝试。

其次,你说你为大学项目做这件事。在这种情况下,在编写源代码的另一个字符之前,您应该确实了解DNS的工作原理。学习就是为什么你一开始就在大学,对吗?

第三,获取别人信息的正确方法不是试图违背他们的意愿(正如你现在所做的那样)从他们身上撕掉信息。正确的方法是很好地请他们给你,并准备他们可能需要赔偿才能给你。 &#34;其中&#34;如果UK ccTLD为Nominet。您可以在他们的网站上找到您在此处回答问题所需的所有信息。