相信很多玩域名的人都在为找寻和抢注合适的域名而四处疯狂刷论坛,网站,为了一个心仪的域名不惜花重金从域名所有者手中购买。由于国际域名管理机构是采取“先申请,先注册,先使用”的方式,而域名只需要缴交金额不高的注册年费,只要持续注册就可以持有域名的使用权。为此,很多域名倒卖(俗称米商)者常常花重金买短域名,好记的域名。以前为了搞几个采集站也就想着买短一点的域名,但是无奈无论是抢注还是找人购买价格都很贵,那么既然先到先得,我们同样可以通过在域名所有者忘记续费时抢先一步注册,就可以获得好域名了。
国内的域名商很多,这里以阿里为例,说明脚本化自动找寻心仪的域名的方法。
网络请求分析
首先分析阿里域名筛选的请求参数和内容,方便进行python自动化运行。 打开域名交易首页 由于最便宜的域名注册方式就是重新注册已经过期的域名,因此这里选择万网预订
用来建站,自然不用哪些垃圾域名后缀,这里只选择com。注册日期当然也早越好,这里最早为2006,到现在也是14年的老域名了,因此选择2006。状态选择未预定。通过谷歌浏览器的网络栏找到对应的带参数的搜索域名请求地址为 domainapi.aliyun.com,参数可以通过浏览器查看,如图
可以看到get请求中的参数详情
- suffix:对应域名后缀
- regDate: 对应注册时间
- pageSize: 对应每一页域名数量,可通过修改此参数一次性获取不超过1000个的域名
- currentpage: 对应当前所在页
- bookstatus: 表明是否被预定,false为未预定,true为已预定
- maxLength: 域名长度,当然越短越好,我设置为5
- token: 鉴权参数,后面分析
- callback: 返回格式,为方便我们可以改为json格式,python的json包就可以直接使用了
其实比较关键的就是token参数的获取了,通过搜索网络请求并没有找到该请求的来源,那么就没有办法获取鉴权的token了吗?当然不是
这里可以通过迂回的方式获得,获得参数必定通过浏览器请求,那么没有发现该请求自然时因为它可能通过jquery请求而没有记录,我们可以通过请求最原始的地址来获取,也就是阿里云域名预注册。为防止请求被刷新,首先需要打开谷歌浏览器的记录历史请求的选项,如图:
然后重新打开一个干净的标签页,打开审查选项,选上如上图所示的记录历史,访问阿里云域名预注册,
找到当前的token为Y15a564fc4ed081a18a64aa9b0ccc23bb
接下来搜索html和json请求找到token出现位置
自动查询注册域名
上面网络请求已经很清晰了,接下来只需要根据请求一步步编写自动话脚本了。
直接上代码:
# 该脚本运行后将会在当前目录生成包含可注册域名列表的ali_domain.txt文件
# 并不包含自动在运营商注册的内容
# 请知悉
## 先导入必要的包
import requests
import pandas as pd
import json
import time
TIMEOUT = 10
headers = {"Referer":"https://wanwang.aliyun.com/domain/reserve",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) Apple: WebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
}
def get_token():
tokenurl = "https://promotion.aliyun.com/risk/getToken.htm"
text = requests.get(tokenurl,headers=headers).text
return json.loads(text)["data"]
def get_domains(token,regd="2006"):
### 这里根据参数直接修改就行,我设置的是一页100条记录,也就是100个域名,查看第一页就好了
### 后缀 com,域名长度最大为5,返回设置为json
url = "https://domainapi.aliyun.com/preDelete/search.jsonp?keyWord=&excludeKeyWord=&keywordAsPrefix=false&keywordAsSuffix=false&exKeywordAsPrefix=fa\
lse&exKeywordAsSuffix=false&constitute=&suffix=com&domainType=&endDate=®Date={}&pageSize=100¤tPage=1&bookStatus=false&reserveRmb=&sortBy=1&pa\
tnerTypes=&sortType=1&_t=self&minLength=&maxLength=5&minPrice=&maxPrice=&token=tdomain-aliyun-com%3A{}&callback=json".format(regd,token)
text = requests.get(url,headers=headers,timeout = TIMEOUT).text
#根据json结构获取内容
domains = json.loads(text.split("(")[1].split(")")[0])
return domains
## 这里手动添加token
token = "Y15a564fc4ed081a18a64aa9b0ccc23bb"
## 这里通过阿里的api自动获取token
token = get_token()
print(token)
## 搜索到的域名保存文件名
filename = "ali_domain.tsv"
## 每次运行是更新文件内容
with open("ali_domain.tsv",'w') as fw:
fw.close()
# 从2006年到2010 年逐年搜索并写入到csv文件
for i in range(2006,2010):
domains = get_domains(token,regd=str(i))
if domains["code"]=="200":
domains = domains["data"]["pageResult"]["data"]
domains = pd.DataFrame.from_dict(domains)
domains = domains[~domains.short_name.str.contains("-")]
print(domains)
domains.to_csv(filename,index=None,mode="a",sep="\t")
time.sleep(20)
新脚本
import sys
import requests
import pandas as pd
import json
import time
import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:1081'
TIMEOUT = 10
headers = {"Referer":"https://wanwang.aliyun.com/domain/reserve",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) Apple: WebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
}
def get_token():
tokenurl = "https://promotion.aliyun.com/risk/getToken.htm"
text = requests.get(tokenurl,headers=headers).text
return json.loads(text)["data"]
def get_df(token,regd="2006"):
url = f"https://domainapi.aliyun.com/preDelete/search.jsonp?keyWord=&excludeKeyWord=&keywordAsPrefix=false&keywordAsSuffix=false&exKeywordAsPrefix=false&exKeywordAsSuffix=false&constitute=&suffix=com&domainType=&endDate=®Date=&pageSize=500¤tPage=1&bookStatus=0&reserveRmb=&sortBy=1&patnerTypes=&sortType=1&_t=self&minLength=&maxLength=8&minPrice=&maxPrice=&token=tdomain-aliyun-com%3A{token}&callback=json"
#print(url)
text = requests.get(url,headers=headers,timeout = TIMEOUT).text
res = json.loads(text.split("(")[1].split(")")[0])
return res
token = get_token()
filename = "/home/teng/ali.txt"
def has_pairs(s):
if s[0]==s[1] or s[1]==s[2] or s[2]==s[3]:
return True
return False
df_list = []
# Loop through the years and process the data
for i in range(2006, 2010):
df = get_df(token, regd=str(i))
if df["code"] == "200":
df = df["data"]["pageResult"]["data"]
df = pd.DataFrame.from_dict(df)
# Filter out rows based on the conditions
filters = ['-', 'z', '2', 'i', 'l', '1', 'o', '0','q','9','g']
for f in filters:
df = df[~df.short_name.str.contains(f)]
# Apply the has_pairs function
df['pairs'] = df['short_name'].apply(has_pairs)
df = df[df.pairs == True]
# Append the filtered dataframe to the list
df_list.append(df)
domains = pd.concat(df_list, ignore_index=True)
ori = pd.read_csv(filename, sep=',')
domains = domains.drop_duplicates()
print(domains)
domains = pd.concat([ori, domains]).reset_index(drop=True)
domains = domains.drop_duplicates()
domains.to_csv(filename, index=None, mode="w")
运行后查看文件部分内容
head -n 40 ali_domain.tsv
结果如下,当前域名在2020年09月22日生成,其他结果自行运行脚本吧,如果大家有需求的话我再在网站上另外做一个网页专门显示最新可注册4-5位的com域名。
beian book_status domain_len domain_name end_date price reg_date short_name pairs
0 0 0 4 n344.com 2025-06-06 83.0 2021-12-14 n344 True
1 0 0 4 6ycc.com 2025-06-06 83.0 2023-03-20 6ycc True
2 0 0 4 6fpp.com 2025-06-06 83.0 2024-04-15 6fpp True
3 0 0 4 t33k.com 2025-06-06 83.0 2023-03-28 t33k True
4 0 0 4 y55n.com 2025-06-06 83.0 2018-10-20 y55n True
5 0 0 4 k88u.com 2025-06-06 83.0 2024-03-28 k88u True
6 0 0 4 kkt8.com 2025-06-06 83.0 2021-03-18 kkt8 True
7 0 0 4 aad4.com 2025-06-06 83.0 2024-03-18 aad4 True
8 0 0 4 xx4x.com 2025-06-06 83.0 2021-03-19 xx4x True
9 0 0 4 5khh.com 2025-06-06 83.0 2012-03-18 5khh True
10 0 0 4 yaa4.com 2025-06-06 83.0 2024-03-18 yaa4 True
11 0 0 4 77u5.com 2025-06-06 83.0 2024-03-17 77u5 True
12 0 0 4 ppk5.com 2025-06-06 83.0 2015-03-27 ppk5 True
13 0 0 4 b4mm.com 2025-06-06 83.0 2024-03-20 b4mm True
14 0 0 4 s66r.com 2025-06-07 83.0 2023-03-21 s66r True
15 0 0 4 u66b.com 2025-06-07 83.0 2023-03-21 u66b True
16 0 0 4 y77n.com 2025-06-07 83.0 2019-08-15 y77n True
17 0 0 4 ww7c.com 2025-06-07 83.0 2024-03-29 ww7c True
总结
通过该脚本每天都可以发现好几个可以注册的2006年左右注册的长度为4位数的老域名,老域名还真的是挺多的,接下来只需要到喜欢的域名商中去预定就好了,当然我们只注册别人忘记续费的域名,所以只需要基础的注册价就可以注册到了。通过这种方式,已经注册了好几个域名,比如好看头像,趣事追踪,然后惊喜的发现域名注册日期变成了2020年,也就是说别人过期的域名重新注册的话,日期是重新计算的,对域名注册商来说也就跟新域名差不多,但是对seo的影响就不知道了。