调用域名注册api,查询所有域名组合脚本

想查询所有短域名是否被注册了,a-z1-9组成的所有3,4位组合的.com域名是否有没被注册的,于是开干,google后知道万网提供一个api可以查询, http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=google.com, 后面的google.com可以换做你想查询的域名,结果会返回一个xml页面,如下
1
2
3
4
5
6
  <?xml   version= "1.0"  encoding= "gb2312" ?>
<property>
<returncode>200< /returncode >
<key>google.com< /key >
<original>211 : Domain name is not available< /original >
< /property >

上面的是域名已经被注册的返回页面,下面的是域名未被注册的页面,代码分别是211,210

1
2
3
4
5
6
  <?xml version= "1.0"  encoding= "gb2312" ?>
<property>
<returncode>200< /returncode >
<key>googleloveyou.com< /key >
<original>210 : Domain name is available< /original >
< /property >

 

域名查询api有了,于是想办法解决如何生成所有 字母和数字 组成的3,4,5位组合,这是难点,生成所有3位组合,大家很容易解决,但是生成3,4,5位的貌似有点犯难了, google一下没获得好的信息,于是自己画图,自己想,和朋友求思路,最后终于解决了,思路是 用数字代替字母,

如  string = "abcdefghijklmnopqrstuvwxyz1234567890"

到时生成的4位域名组合为 aaaa  aaab aaac aaad .... aaba aabb ... ...abaa abab等,转化成数字分别为 0000 0001 0002 0003 .... 0010 0011 ... ... 0100 0101 这些数字代表的是string的index,当数字为字母长度时,上一位数字+1,最后将数字列表转换成字母列表即可,脚本如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/python
# coding: utf-8
# author: GuangHongwei
# date: 2014/7/28
# mail: 
     
import  time
import  urllib
import  re
api =  "http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=%s"   # api地址
string =  "abcdefghijklmnopqrstuvwxyz1234567890"                    # 所有字母
string_len = len(string)                                           # 长度
fname =  'name.txt'                                                 # 还没被注册的域名写入该文件
suffix =  '.com'                                                    # 域名后缀
domain_lenth_range = range(3, 5)                                   # 字母组合的长度,3到5但不包括5
 
def min(num):
     "" "初始化第一个值数字列表" ""
     name = []
     for  in  range(num):
         name.append(0)
     return  name
  
def max(num, max_num):
     "" "返回最大的值数字列表" ""
     name =  []
     for  in  range(num):
         name.append(max_num)
     return  name
     
def num_2_string(name, string):
     "" "将数字列表转化为字母组合列表" ""
     new_name = []
     for  in  name:
         new_name.append(string[i])
     return  '' . join (new_name)  
 
def is_ava(domain):
     "" "判断该域名是否被注册" ""
     data = urllib.urlopen(api % domain). read ()
     ava_pattern = re.compile(r '<original>(.*) : .*</original>' )
     perm_pattern = re.compile(r 'Forbidden' )
     result = ava_pattern.findall(data)
     if  '210'  in  result:
         print  '%s ---------> Ok'  % domain
         return  True
     elif  '211'  in  result:
         print  '%s ---------> No'  % domain
         return  False
     else :
         print  'Forbidden'
         return  False
         
def domain_name(num):
     "" "域名组合生成器" ""
     name = min(num)
     last = max(num, string_len-1)
     while  True:
         yield num_2_string(name, string)
         if  name == last:
             break
         name[num-1] += 1
         while  string_len  in  name:
             index = name.index(string_len)
             name[index] = 0
             name[index-1] += 1
             
def run(domain_lenth):
     "" "执行,如果每被注册就写到文件中" ""
     f =  open (fname,  'a' )
     for  domain  in  domain_name(domain_lenth):
         domain += suffix
         if  is_ava(domain):
             f.write( '%s\n'  % domain)
             f.flush()
         time . sleep (0.5)
     
  
if  __name__ ==  '__main__' :
     "" "最终执行, 循环执行每种长度组合" ""
     for  in  domain_lenth_range:
         run(i)

 

 脚本可以通过附件下载,直接运行即可,结果如下

wKioL1PVwSegbm3OAAGvRXS6dG0334.jpg

 

最后,由于万网的api,查询过于频繁,时间间隔太短,很快就会被封ip的,注意些。

 出处http://laoguang.blog.51cto.com/6013350/1531198

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个示例JS脚本,用于调用POST类型的API,需要传递请求体和标头: ```javascript // 设置请求参数 const url = 'https://example.com/api'; // 替换为你的API URL const requestBody = { // 替换为你要发送的请求体 name: 'John Doe', email: 'johndoe@example.com' }; const headers = { // 替换为你要设置的请求头 'Content-Type': 'application/json', 'Authorization': 'Bearer my_token' }; // 发送POST请求 fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(requestBody) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); ``` 解释: - `fetch`是用于发起网络请求的JavaScript内置方法。 - 第一个参数是请求的URL,第二个参数是一个配置对象,其中包含请求方法(POST)、标头和请求体。 - 在此示例中,我们使用了`JSON.stringify`方法将JavaScript对象转换为JSON格式的字符串,并将其作为请求体发送到API。 - 通过`then`方法处理响应,将响应转换为JSON格式,并在控制台中输出响应数据。 - 如果有错误发生,使用`catch`方法处理错误并在控制台中输出错误消息。 请注意,在实际应用程序中,您需要将示例代码中的URL,请求体和标头替换为您自己的值。 ### 回答2: 当使用JavaScript编写一个调用POST类型接口的脚本时,需要传递Body和Header信息。以下是一个示例的JavaScript脚本: ```javascript // 创建一个XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 设置请求方法和URL xhr.open("POST", "接口的URL", true); // 设置请求头部信息 xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Authorization", "Bearer token"); // 定义回调函数,处理响应结果 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var response = JSON.parse(xhr.responseText); // 处理接口返回的数据 console.log(response); } }; // 构造请求体数据对象 var requestBody = { // 在这里添加需要传递的数据 }; // 发送请求 xhr.send(JSON.stringify(requestBody)); ``` 上述脚本首先创建一个XMLHttpRequest对象,然后设置请求的方法和URL。接着,使用`setRequestHeader`方法设置请求头部信息,其中`Content-Type`指定了请求的数据类型为`application/json`,`Authorization`指定了身份验证信息(Token)。然后,定义了一个回调函数处理请求的响应结果,当`readyState`为4且`status`为200时,表示请求成功。最后,通过`send`方法发送请求,其中请求体部分使用`JSON.stringify`方法将JavaScript对象转换为JSON字符串。 请注意,在实际使用中,您需要根据接口的具体要求来设置请求的URL、请求头部和请求体数据。 ### 回答3: 使用JavaScript编写调用POST类型接口并传递body和header的脚本可以按照以下步骤进行: 1. 首先,创建一个XMLHttpRequest对象来处理HTTP请求。 2. 设置请求方法为POST,使用open()方法设置请求地址和接收响应的方式。 3. 设置请求头信息,可以使用setRequestHeader()方法设置Content-Type和其他自定义的请求头。 4. 创建一个对象用于传递需要发送的数据,可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串。 5. 发送请求并在接收到响应后进行处理,可以使用onreadystatechange事件监听状态变化,当readyState为4(表示请求已完成)且status为200(表示请求成功)时,可以使用responseText属性获取服务器返回的数据。 下面是一个示例代码: ```javascript var xhr = new XMLHttpRequest(); var url = "接口地址"; var data = { // 请求体 }; xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("自定义头名称", "自定义头值"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var response = JSON.parse(xhr.responseText); // 对服务器返回的数据进行处理 } }; xhr.send(JSON.stringify(data)); ``` 在上面的代码中,需要将`接口地址`替换为实际的接口地址,`请求体`替换为需要传递的数据。可以根据接口要求设置不同的请求头,例如Content-Type和自定义的请求头。 需要注意的是,由于跨域安全策略的限制,如果需要请求的接口与脚本所在的域名不一致,需要在服务器端进行相应的设置以支持跨域请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值