【发布时间】: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