Skip to content(if available)orjump to list(if available)

Tldx – CLI tool for fast domain name discovery

Brandutchmen

I’m always building small tools for myself that end up buried in private repos. I figured it was time to start sharing a few that others might find useful.

Just published tldx, a CLI tool I use to quickly check if a domain name is available across a bunch of TLDs and variations.

Hopefully, some of you CLI enthusiasts can find it useful!

cranberryturkey

need --suggest "..." --max 100

Brandutchmen

I'm wanting to add something like this.

Besides length, what would you think would be a good way to sort suggestions here?

cranberryturkey

just alphabetically easier to read imo

noperator

You can also use https://github.com/noperator/raink to brainstorm TLDs that are relevant to some topic you care about. For example:

    curl -s https://data.iana.org/TLD/tlds-alpha-by-domain.txt |
        raink -f /dev/stdin -p 'which of these TLDs is most related to the concept of "hacking"?' |
        jq -r 'map(.value)[:10]'
    
    [
      "BLACK",
      "COMSEC",
      "TOOLS",
      "SECURITY",
      "ZERO",
      "EXPOSED",
      "FORUM",
      "SHELL",
      "BOT",
      "SOFTWARE"
    ]
Those are all in the IANA list but not all can be registered—just showing as PoC. See https://bishopfox.com/blog/raink-llms-document-ranking for more background.

noitpmeder

Are you the creator of that project?

cb321

Since identifier bike shedding is more broad than only top-level domain names, readers interested in a tool like this might also be interested in https://github.com/c-blake/thes - a command-line thesaurus utility written in Nim and organized around the Moby Thesaurus format. An example usage might be:

    $ thes -n5 lofty
    airy    gaudy   high   showy  brand  sound
    big     grand   lurid  steep  clear  valid
    erect   grave   noble  tall   lucid  logo
    fancy   great   proud  tony   regal
Observant readers might notice 3 banks of alphabetic sorting for the 3 kinds of synonyms - reciprocal/reflected (airy..tony), defined but irreciprocal (brand..valid), and wilder made-up names/phrases someone got into Moby (just logo in this example). These can be configured to show up in 3 distinct terminal colors.

Besides the prefix/suffix ideas of `tldx` in TFA, "synonymity" could also be incorporated, but you might need a higher quality source of such than Moby which has kind of a "big tent" aspect to its synonym lists.

a_dabbler

You should consider adding DNS checks prior to WHOIS. Whois is unreliable and you can be quickly blocked, doing a quick SOA DNS request can help reduce your WHOIS queries when the domain definitely exists (no SOA is not enough to confirm domain is unregistered but existing SOA is enough to confirm a domain is registered)

Arubis

WHOIS is actually scheduled for sunset by IANA: https://www.icann.org/en/announcements/details/icann-update-...

Brandutchmen

This is good to know! I'll migrate this over to RDAP

indigodaddy

So only do a whois when no SOA exists. That's clever.

Brandutchmen

Yeah! Excited to have a short circuit.

Brandutchmen

Good advice!

DNS check -> RDAP seems to be the right way to take this.

dedicate

The core problem: The good old days of easy domain hunting are long gone...

amelius

My version of the tool:

    #!/bin/sh

    echo "Don't bother, all the good names have been taken"

akoculu

I just got some good domains like mitte.ai and told.so a few months ago

Brandutchmen

I agree. That's why I love using a permutation tool like this. It has had some surprising finds so far.

Though it's still a cope for the real problem of domain squatting.

akoculu

installation fails for me

λ brew tap brandonyoungdev/tldx λ brew install tldx

==> Fetching brandonyoungdev/tldx/tldx ==> Downloading https://github.com/brandonyoungdev/tldx/releases/download/ curl: (56) The requested URL returned error: 404

Error: tldx: Failed to download resource "tldx" Download failed: https://github.com/brandonyoungdev/tldx/releases/download/v1...

croes

phinnaeus

Surely just a typo in the readme

Brandutchmen

Yep! There's supposed to be two examples there... Fixed now :)

Brandutchmen

Good eye.

Fixed now :)