rdomains 0.5.0

A label has a date, and now the package says so

Two of the four lookup sources are no longer published: DMOZ closed in March 2017 and Shallalist stopped in 2022. Their labels were correct when assigned, but domains expire and change hands, so a lookup today can return the previous registrant’s category. Until now that answer was presented identically to one from a list updated last week.

The sibling project piedomains measured what this confusion costs: its worst class disagreed with its own page content 71% of the time, and the cause was not bad annotation but roughly a decade between the label and the page. Only 60% of the domains it trained on still resolve.

Fetch page content, not just look domains up

New collect_content() fetches homepage HTML and text, so a domain can be classified on what it says today rather than on what a list said years ago. It returns one row per requested domain, never dropped, each carrying status, stage, error_code and retryable – so a transient failure is distinguishable from a permanent one and only the right rows get retried. fetch_error_codes() documents the closed set of reasons; fetch_report() summarises a run.

Supporting functions, all usable on their own if you already hold HTML:

The crawler identifies itself as rdomains/<version> with a contact URL, obeys robots.txt including Crawl-delay, spaces requests to the same host, caps the response body, follows redirects by hand so every hop is re-validated, and refuses hosts resolving to private or link-local addresses.

Static HTML only – no headless browser, so a JavaScript-rendered page comes back thin and says so.

Bug fixes

Testing

rdomains 0.4.0

Breaking Changes

Major Changes

API Updates

Improvements

Internal Changes

Breaking Changes

rdomains 0.3.0

rdomains 0.2.1

rdomains 0.2.0

rdomains 0.1.9

rdomains 0.1.8

rdomains 0.1.7

rdomains 0.1.6

rdomains 0.1.5

rdomains 0.1.0