2022-06-08 In the event you want a brand new area identify, and also you need a .com, and also you don’t wish to kind random concepts right into a registrar search, right here’s a method to do it.
First, apply for entry to the zone file, utilizing ICANN’s Centralized Zone Information Service (CZDS) at https://czds.icann.org/. It’s free, however takes just a few days to get accepted. Learn extra about it right here.
As soon as accepted, they electronic mail you a password to log in and obtain the file referred to as com.txt.gz.
<pre>$ du -hs com.txt.gz # 4.6GB compressed4.6G com.txt.gz$ gunzip com.txt.gz # uncompress and wait$ du -hs com.txt23.0G com.txt # 23 gigs uncompressed$ wc -l com.txt404261754 com.txt # 404 million traces</pre> Extract the distinctive names
com.txt has 404 million traces like this:
<pre>zombahomes.com. 172800 in ns ns2.tierra.web.zombai.com. 172800 in ns ns1.parkingcrew.web.zombai.com. 172800 in ns ns2.parkingcrew.web.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.</pre> Domains often have multiple entry. You might want to extract the distinctive entries. And also you solely want the half earlier than the “.com”.
Right here’s a Ruby script that loops via com.txt, will get the half earlier than .com, skips it if duplicate, and outputs it if distinctive.
area = '' File.open('com.txt', 'r') do |infile| File.open('domains.txt', 'w') do |outfile| whereas line = infile.will get temp = line[0...(line.index('.com'))] subsequent if temp == area area = temp outfile.places area finish finish finish
obtain code “domains.txt” ought to now be about 162 million traces – (about 2.2GB) – that appear to be this:
<pre>$ sqlite3 domains.db sqlite> create desk domains(area textual content);sqlite> .import "domains.txt" domainssqlite> create index dd on domains(area);</pre> Discover obtainable dictionary phrases
In the event you’re on Mac, Linux, or BSD, it is best to have a dictionary of phrases at /usr/share/dict/phrases. See which of these phrases can be found:
require 'sqlite3' db = SQLite3::Database.new('domains.db') question = db.put together('choose area from domains the place area = ?') File.readlines('/usr/share/dict/phrases').every do |phrase| rows = question.execute(phrase.downcase.strip) places phrase except rows.subsequent finish
obtain code Run that, and also you’ll have an inventory of 93,000 dictionary phrases which might be obtainable with the .com extension. Congratulations! Go to porkbun.com (an awesome little registrar) to register yours.
You’ll discover that some aren’t really obtainable as a result of that “com.txt” file doesn’t checklist domains on maintain, pending deletion, or with out identify servers.
If you’re not excited that “electrotelethermometer.com” or “counterexcommunication.com” is obtainable, perhaps you want to a mixture of two brief phrases? Choose solely dictionary phrases as much as 4 letters, then seek for the mix.
require 'sqlite3' phrases = File.readlines('/usr/share/dict/phrases').map(&:strip) phrases.choose! w.measurement <= 4 db = SQLite3::Database.new('domains.db') question = db.put together('choose area from domains the place area = ?') phrases.every do |word1| phrases.every do |word2| combo = (word1 + word2).downcase rows = question.execute(combo) places combo except rows.subsequent finish finish
In the event you ran that final script, you’ll get tens of tens of millions of obtainable domains like “knabtuik.com” as a result of there are lots of unknown, ugly, and ineffective brief phrases.
So make a brand new file referred to as “goodwords.txt” of solely three and 4 letter phrases, utilizing grep:
<pre>$ grep "^...$" /usr/share/dict/phrases >> goodwords.txt$ grep "^....$" /usr/share/dict/phrases >> goodwords.txt</pre> Edit that file by hand, deleting each phrase you’d by no means need. (The much less you retain, the higher.) Then run that Ruby script once more, combining simply the nice phrases:
require 'sqlite3' phrases = File.readlines('goodwords.txt').map(&:strip) db = SQLite3::Database.new('domains.db') question = db.put together('choose area from domains the place area = ?') phrases.every do |word1| phrases.every do |word2| combo = (word1 + word2).downcase rows = question.execute(combo) places combo except rows.subsequent finish finish
obtain code A lot better, proper? A bit of time consuming, however value it. That is how I discovered the identify of my new translation service, Inchword.
One last hack is that there are tons of very-short .com domains obtainable within the format “letter-number-letter-number”. For instance: q7r7.com or e3p3.com.
require 'sqlite3' db = SQLite3::Database.new('domains.db') question = db.put together('choose area from domains the place area = ?') ('a'..'z').every do |a| ('0'..'9').every do |b| ('a'..'z').every do |c| ('0'..'9').every do |d| combo = a + b + c + d rows = question.execute(combo) places combo except rows.subsequent finish finish finish finish