The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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.
source_vintage() reports every category source,
when it was last published, whether it is still maintained, and its
successor where one exists.shalla_cat(), dmoz_cat() and
stevenblack_cat() now return a
source_last_published column. For the two dead lists this
is a constant; for Steven Black’s actively-maintained hosts file it is
the fetched file’s own date.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.
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:
page_signals() reports whether a page is an anti-bot
interstitial, a domain-parking placeholder, a server’s “nothing here”
page, or too thin to classify. Vendor presence alone is not a block:
reddit, walmart and quora all serve real pages while embedding
reCAPTCHA.html_text_content() extracts text, title, description
and language.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.
get_dmoz_data() built its output path with
paste0(), so the documented default
outdir = "." produced a hidden
.dmoz_domain_category.csv that dmoz_cat()
would then fail to find. It now uses file.path(), matching
its two siblings.stevenblack_cat(use_file = NULL) re-downloaded roughly
4 MB on every call. The file is now cached for the
session.skip_on_cran() and skip_if_offline() guards,
as CRAN policy requires.get_alexa_data() function (Alexa service
discontinued by Amazon)virustotal_cat() to use VirusTotal API v3
(previously v2.0)virustotal_cat() implementation to properly
extract categories from v3 API response structureclean_domains() - standardized domain cleaningvalidate_domains() - comprehensive input
validationvalidate_data_file() - consistent file validationget_api_key() - unified API key retrievalbuild_categorization_prompt() - LLM prompt
constructionapply_rate_limit() - rate limiting logic:: notation for imported functions
(cleaner code, consistent with @importFrom)get_alexa_data() has been removed (service
discontinued)virustotal_cat() parameter renamed from
domain to domains for consistencyopenai_cat() and claude_cat() functions*_cat()
functions for seamless integrationThese binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.