Skip to content

TwiN/whois

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

whois

test

Lightweight library for retrieving WHOIS information on a domain.

It automatically retrieves the appropriate WHOIS server based on the domain's TLD by first querying IANA.

Usage

As an executable

To install it:

go install github.com/TwiN/whois/cmd/whois@latest

Alternatively, you can download whois from the release section, though you'll have to unzip the file first.

To run it:

whois example.com

As a library

go get github.com/TwiN/whois

Query

If all you want is the text a WHOIS server would return you, you can use the Query method of the whois.Client type:

package main

import "github.com/TwiN/whois"

func main() {
    client := whois.NewClient()
    output, err := client.Query("example.com")
    if err != nil {
    	panic(err)
    }
    println(output)
}

QueryAndParse

If you want specific pieces of information, you can use the QueryAndParse method of the whois.Client type:

package main

import "github.com/TwiN/whois"

func main() {
    client := whois.NewClient()
    response, err := client.QueryAndParse("example.com")
    if err != nil {
    	panic(err)
    }
    println(response.ExpirationDate.String()) 
}

Note that because there is no standardized format for WHOIS responses, this parsing may not be successful for every single TLD.

Currently, the only fields parsed are:

  • ExpirationDate: The time.Time at which the domain will expire
  • DomainStatuses: The statuses that the domain currently has (e.g. clientTransferProhibited)
  • NameServers: The nameservers currently tied to the domain

If you'd like one or more other fields to be parsed, please don't be shy and create an issue or a pull request.

Caching referral WHOIS servers

The way that WHOIS scales is by having one "main" WHOIS server, namely whois.iana.org:43, refer to other WHOIS server on a per-TLD basis.

In other word, let's say that you wanted to have the WHOIS information for example.com. The first step would be to query whois.iana.org:43 with com, which would return whois.verisign-grs.com. Then, you would query whois.verisign-grs.com:43 for the WHOIS information on example.com.

If you're querying a lot of servers, making two queries instead of one can be a little wasteful, hence WithReferralCache(true):

client := whois.NewClient().WithReferralCache(true)

The above will cache the referral WHOIS server for each TLD, so that you can directly query the appropriate WHOIS server instead of first querying whois.iana.org:43 for the referral.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy