More Options For Querying DNS From R with 1.1.1.1
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
You have to have been living under a rock to not know about Cloudflare’s new 1.1.1.1 DNS offering. I won’t go into “privacy”, “security” or “speed” concepts in this post since that’s a pretty huge topic to distill for folks given the, now, plethora of confusing (and pretty technical) options that exist to support one or more of those goals.
Instead, I’ll remind R folks about the gdns
package which provides a query interface to oogle’s DNS-over-HTTPS JSON API and announce dnsflare
which wraps the new and similar offering by Cloudflare. In fact, Cloudflare adopted Google’s response format so they’re pretty interchangeable:
str(gdns::query("r-project.org")) ## List of 10 ## $ Status : int 0 ## $ TC : logi FALSE ## $ RD : logi TRUE ## $ RA : logi TRUE ## $ AD : logi FALSE ## $ CD : logi FALSE ## $ Question :'data.frame': 1 obs. of 2 variables: ## ..$ name: chr "r-project.org." ## ..$ type: int 1 ## $ Answer :'data.frame': 1 obs. of 4 variables: ## ..$ name: chr "r-project.org." ## ..$ type: int 1 ## ..$ TTL : int 2095 ## ..$ data: chr "137.208.57.37" ## $ Additional : list() ## $ edns_client_subnet: chr "0.0.0.0/0" str(dnsflare::query("r-project.org")) ## List of 8 ## $ Status : int 0 ## $ TC : logi FALSE ## $ RD : logi TRUE ## $ RA : logi TRUE ## $ AD : logi FALSE ## $ CD : logi FALSE ## $ Question:'data.frame': 1 obs. of 2 variables: ## ..$ name: chr "r-project.org." ## ..$ type: int 1 ## $ Answer :'data.frame': 1 obs. of 4 variables: ## ..$ name: chr "r-project.org." ## ..$ type: int 1 ## ..$ TTL : int 1420 ## ..$ data: chr "137.208.57.37" ## - attr(*, "class")= chr "cf_dns_result"
The packages are primarily of use for internet researchers who need to lookup DNS-y things either as a data source in-and-of itself or to add metadata to names or IP addresses in other data sets.
I need to do some work on ensuring they both are on-par feature-wise (named-classes, similar print and batch query methods, etc) and should, perhaps, consider retiring gdns
in favour of a new meta-DNS package that wraps all of these since I suspect all the cool kids will be setting these up, soon. (Naming suggestions welcome!)
There’s also getdns
which has very little but stub test code in it (for now) since it was unclear how quickly these new, modern DNS services would take off. But, since they have, that project will be revisited this year (jump in if ye like!) as is is (roughly) a “non-JSON” version of what gns
and dnsflare
are.
If you know of other, similar services that can be wrapped, drop a note in the comments or as an issue on one of those repos and also file an issue there if you have preferred response formats or have functionality you’d like implemented.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.