呼叫域名註冊api,查詢所有域名組合指令碼
今天有個想法,想查詢所有短域名是否被註冊了,a-z1-9組成的所有3,4位組合的.com域名是否有沒被註冊的,於是開幹,google後知道萬網提供一個api可以查詢, 後面的google.com可以換做你想查詢的域名,結果會返回一個xml頁面,如下
<?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
<?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,最後將數字列表轉換成字母列表即可,指令碼如下:
#!/usr/bin/python
# coding: utf-8
# author: GuangHongwei
# date: 2014/7/28
# mail:
import time
import urllib
import re
api = "%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 i in range(num):
name.append(0)
return name
def max(num, max_num):
"""返回最大的值數字列表"""
name = []
for i in range(num):
name.append(max_num)
return name
def num_2_string(name, string):
"""將數字列表轉化為字母組合列表"""
new_name = []
for i 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 i in domain_lenth_range:
run(i)
指令碼可以透過附件下載,直接執行即可,結果如下
wKioL1PVwSegbm3OAAGvRXS6dG0334.jpg
最後,由於萬網的api,查詢過於頻繁,時間間隔太短,很快就會被封ip的,注意些。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69920892/viewspace-2722832/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 萬網域名查詢API介面API
- 域名註冊網站哪個好?國外域名註冊商推薦網站
- 域名註冊流程有哪些?域名註冊需要哪些材料?(中科三方)
- 域名註冊有什麼好處?GoDaddy平臺註冊域名好不好?Go
- NameCheap域名怎麼樣,如何註冊購買域名?如何解析域名?
- GoDaddy註冊域名的優勢Go
- 域名查詢:域名管理者的必備技能
- 為什麼要在GoDaddy註冊域名Go
- 政府域名字尾是什麼?註冊政府域名有哪些要求?
- 什麼是二級域名?二級域名如何註冊申請?
- 域名資訊查詢怎麼操作?Godaddy的whois域名資訊查詢在哪裡?Go
- 恆訊科技分析:com域名和cn域名註冊哪一個好?
- 註冊域名需要注意哪些事項?
- 域名註冊平臺哪個好?帶你瞭解一下全球最大的域名註冊商GoDaddyGo
- 政府網站域名有什麼特點?如何註冊政府網站域名?網站
- 域名小白看過來,GoDaddy專業答疑域名註冊常見問題!Go
- 開心!一塊錢註冊了域名 .xyz
- 註冊域名時需要注意哪些事項?
- 微信域名攔截查詢-網址被遮蔽檢測api介面API
- 微信域名攔截查詢 如何批次查詢我們的域名在微信中是否被攔截
- ICP域名備案查詢 分享一個可以快速批次查詢域名備案資訊的平臺
- Linux基礎命令---host域名查詢工具Linux
- 可線上查詢子域名和同IP域名的RapidDNS聯動GobyAPIDNSGo
- 域名管理百科:如何進行whois域名查詢?(中科三方)
- 快速查詢最新備案域名的Api介面API
- 域名拍賣網站有哪些?GoDaddy這家域名註冊服務商靠譜嗎?網站Go
- 好域名的價值所在,是什麼讓godaddy成為最大的域名註冊商?Go
- 微信域名被攔截?用這款域名解析查詢檢測工具
- 微信域名批次檢測 微信域名攔截查詢的實現方式
- 中科三方:註冊域名有哪些注意事項?
- FebHost:什麼是.ar阿根廷域名,如何註冊?
- 恆訊科技的域名註冊有哪些準則呢?
- 微信域名檢測 微信域名檢測官方介面的呼叫程式碼分享
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 組合查詢(UNION)
- 【工具分享】idomain一個命令列域名查詢工具AI命令列
- 聖誕節infomaniak免費一年COM域名註冊教程
- 乾貨 | 京東雲域名註冊及備案最佳實踐