如果您需要一个新域名,您想要一个.com ,并且您不想在注册商搜索中输入随意的想法,这里有一种方法。
下载所有已注册 .com 域的列表
首先,使用 ICANN 的集中区域数据服务 (CZDS) 申请访问区域文件,网址为https://czds.icann.org/ 。它是免费的,但需要几天时间才能获得批准。 在此处阅读更多相关信息。
一旦获得批准,他们会通过电子邮件向您发送密码以登录并下载名为com.txt.gz的文件。
$ du -hs com.txt.gz # 4.6GB compressed 4.6G com.txt.gz $ gunzip com.txt.gz # uncompress and wait $ du -hs com.txt 23.0G com.txt # 23 gigs uncompressed $ wc -l com.txt 404261754 com.txt # 404 million lines
提取唯一名称
com.txt有 4.04 亿行,如下所示:
zombahomes.com. 172800 in ns ns2.tierra.net. zombai.com. 172800 in ns ns1.parkingcrew.net. zombai.com. 172800 in ns ns2.parkingcrew.net. zombaid.com. 172800 in ns nsg1.namebrightdns.com. zombaid.com. 172800 in ns nsg2.namebrightdns.com. zombaimmo.com. 172800 in ns ns10.lwsdns.com. zombaimmo.com. 172800 in ns ns11.lwsdns.com. zombaimmo.com. 172800 in ns ns12.lwsdns.com. zombaimmo.com. 172800 in ns ns17.lwsdns.com. zombaio.com. 172800 in ns ns-1073.awsdns-06.org.
域通常有多个条目。您需要提取唯一条目。而且您只需要“.com”之前的部分。
这是一个 Ruby 脚本,它遍历 com.txt,获取 .com 之前的部分,如果重复则跳过它,如果唯一则输出它。
domain = '' File.open('com.txt', 'r') do |infile| File.open('domains.txt', 'w') do |outfile| while line = infile.gets temp = line[0...(line.index('.com'))] next if temp == domain domain = temp outfile.puts domain end end end
“domains.txt”现在应该是大约 1.62 亿行——(大约 2.2GB)——看起来像这样:
zombahomes zombai zombaid zombaimmo zombaio
将其加载到 SQLite 中,并对其进行索引。
$ sqlite3 domains.db sqlite> create table domains(domain text); sqlite> .import "domains.txt" domains sqlite> create index dd on domains(domain);
查找可用的字典单词
如果你在 Mac、Linux 或BSD上,你应该在/usr/share/dict/words有一个单词词典。查看其中哪些词可用:
require 'sqlite3' db = SQLite3::Database.new('domains.db') query = db.prepare('select domain from domains where domain = ?') File.readlines('/usr/share/dict/words').each do |word| rows = query.execute(word.downcase) puts word unless rows.next end
运行它,您将获得一个包含 .com 扩展名的 93,000 个字典单词的列表。恭喜!去porkbun.com (一个很棒的小注册商)注册你的。
您会发现有些实际上不可用,因为“com.txt”文件没有列出暂停、待删除或没有名称服务器的域。
结合短字典词
如果您对“electrotelethermometer.com”或“counterexcommunication.com”可用不感到兴奋,也许您想要两个短词的组合?仅选择最多四个字母的字典单词,然后搜索组合。
require 'sqlite3' words = File.readlines('/usr/share/dict/words').map(&:strip) words.select! {|w| w.size <= 4} db = SQLite3::Database.new('domains.db') query = db.prepare("select domain from domains where domain = ?") words.each do |word1| words.each do |word2| combo = (word1 + word2).downcase rows = query.execute(combo) puts combo unless rows.next end end
把它缩小到好词
如果您运行最后一个脚本,您将获得数以千万计的可用域,例如“knabtuik.com”,因为有许多未知、丑陋和无用的短词。
因此,使用 grep 创建一个名为“ goodwords.txt ”的新文件,其中只有三个和四个字母的单词:
$ grep "^...$" /usr/share/dict/words >> goodwords.txt $ grep "^....$" /usr/share/dict/words >> goodwords.txt
手动编辑该文件,删除您永远不需要的每个单词。 (你保留的越少越好。)然后再次运行那个 Ruby 脚本,只结合好词:
require 'sqlite3' words = File.readlines('goodwords.txt').map(&:strip) db = SQLite3::Database.new('domains.db') query = db.prepare("select domain from domains where domain = ?") words.each do |word1| words.each do |word2| combo = (word1 + word2).downcase rows = query.execute(combo) puts combo unless rows.next end end
好多了,对吧?有点费时,但值得。这就是我如何找到我的新翻译服务Inchword的名称。
需要它超短和书呆子吗?
最后一个技巧是,有大量非常短的 .com 域名以“字母-编号-字母-编号”的格式提供。例如: q7r7.com或e3p3.com 。
require 'sqlite3' db = SQLite3::Database.new('domains.db') query = db.prepare("select domain from domains where domain = ?") ('a'..'z').each do |a| ('0'..'9').each do |b| ('a'..'z').each do |c| ('0'..'9').each do |d| combo = a + b + c + d rows = query.execute(combo) puts combo unless rows.next end end end end