Columns

Because PyFunceble provides multiple information in a table, we chose to document them all. The objective of this page is to reflect what the code actually do in a more clear and understandable way.

Domains

This column is one of the basic ones as it gives us the name of the last tested domain or IP.

Status

There’s 3 possible output for this column.

ACTIVE

This status is returned when one of the following cases is met:

  • We can extract the expiration date from Lookup().whois().
    • Please note that we don’t check if the date is in the past.
  • Lookup().nslookup() don’t return an error.
    • Please note that we don’t read the returned value.
  • HTTPCode().get() return one the following code [100, 101, 200, 201, 202, 203, 204, 205, 206].

INACTIVE

This status is returned when all the following cases are met:

  • We can’t extract the expiration date from Lookup().whois().
  • Lookup().nslookup() don’t return an error.

INVALID

This status is returned when all the following cases are met:

  • Domain/IP does not match pass our syntax checker.

  • Domain extension is unregistered in IANA Root Zone Database.

    Note

    Understand by this that the extension is not present in the iana-domains-db.json file.

VALID

This status is returned when we are checking for syntax. It is the equivalent of ACTIVE but for syntax checking.

Expiration Date

There’s two possible output for this column.

Unknown

Unknown is returned when we could not extract the expiration date from Lookup().whois() outputs.

A date

Only if we could extract the expiration date from Lookup().whois(), the date becomes formatted like 02-jan-2017.

Source

At this time, there’s 5 possible output for this column.

HTTP Code

This source is returned when all the following cases are met:

  • We can’t extract the expiration date from Lookup().whois().
  • The INACTIVE status is the one returned by other methods.
  • HTTPCode().get() outputs is one the following [100, 101, 200, 201, 202, 203, 204, 205, 206].

IANA

This source is always returned when the domain has the status INVALID. The usage of this source comes from the comparison of the element extension against the IANA Root Zone Database.

SYNTAX

This source is always returned when the domain has the status INVALID or in the case that we are only checking for syntax instead of availability. The usage of this source comes from the comparison of the element against our domain, IP or URL syntax validation system.

NSLOOKUP

This source is always returned when the taken decision of the status of the domain/IP comes from Lookup().nslookup() outputs.

SPECIAL

As PyFunceble grows, I thought that a bit of filtering for special cases would be great. So I introduced the SPECIAL source.

Note

Please consider all 3 digits number that are listed in this section as the HTTP status code catched by HTTPCode().get().

Warning

Do not want those rules ? You can use following to disable them.

  • -ns`|:code–no-special` arguments from the CLI.
  • no_special: True into your local configuration file.

*.blogspot.*

  • All 404 are returned as INACTIVE
  • All 301 which are blocked by Google or does not exist are returned as INACTIVE
  • All 302 which are blocked by Google are returned as INACTIVE

*.canalblog.com

  • All 404 are returned as INACTIVE

*.doubleclick.net

  • All 404 are returned as INACTIVE

*.liveadvert.com

  • All 404 are returned as INACTIVE

*.skyrock.com

  • All 404 are returned as INACTIVE

*.tumblr.com

  • All 404 are returned as INACTIVE

*.wordpress.com

  • All 301 which match doesn’t exist are returned as INACTIVE

IP with range

  • All IPv4 with a range (for example 0.0.0.0/24) are returned as ACTIVE

HTTP Code

Note

This section reflects exactly what the code does. So any changes made here should also be reported to the code or at least the configuration file.

Note

A *** in this column means that it was impossible to catch the HTTP status code from the web server.

We have categorized the HTTP Code into 3 parts.

  • Active
    • Consider those ones like the one that influences HTTP source logic.
    • Please note that the domain is automatically introduced into the official outputs but we keep a record of it output/Analytic/ACTIVE.
  • Potentially Active
    • If the domain status returned by other methods are different from INACTIVE or INVALID and the HTTP status code is into that list, we save the domain into output/Analytic/POTENTIALLY_ACTIVE
  • Inactive or potentially inactive
    • If the domain status returned by other methods are different from ACTIVE and the HTTP status code is on that list, we save the domain into output/Analytic/POTENTIALLY_INACTIVE

As active

  • 100 - Continue
  • 101 - Switching Protocols
  • 200 - OK
  • 201 - Created
  • 202 - Accepted
  • 203 - Non-Authoritative Information
  • 204 - No Content
  • 205 - Reset Content
  • 206 - Partial Content

As potentially active

  • 000
  • 300 - Multiple Choices
  • 301 - Moved Permanently
  • 302 - Found
  • 303 - See Other
  • 304 - Not Modified
  • 305 - Use Proxy
  • 307 - Temporary Redirect
  • 403 - Forbidden
  • 405 - Method Not Allowed
  • 406 - Not Acceptable
  • 407 - Proxy Authentication Required
  • 408 - Request Timeout
  • 411 - Length Required
  • 413 - Request Entity Too Large
  • 417 - Expectation Failed
  • 500 - Internal Server Error
  • 501 - Not Implemented
  • 502 - Bad Gateway
  • 503 - Service Unavailable
  • 504 - Gateway Timeout
  • 505 - HTTP Version Not Supported

As inactive or potentially inactive

  • 400 - Bad Request
  • 401 - Unauthorized
  • 402 - Payment Required (Not in use but may be seen in the future)
  • 404 - Not Found
  • 409 - Conflict
  • 410 - Gone
  • 412 - Precondition Failed
  • 414 - Request-URI Too Long
  • 415 - Unsupported Media Type
  • 416 - Requested Range Not Satisfiable