Query DNS-based blackhole lists
Supports both IPv4 and IPv6 queries.
pnpm add dnsblimport {lookup, batch} from "dnsbl";
await lookup("127.0.0.2", "zen.spamhaus.org");
// true
await lookup("127.0.0.2", "zen.spamhaus.org", {includeTxt: true});
// {
// listed: true,
// txt: [["some txt"], ["another txt"]]
// }
await batch(["1.2.3.4", "5.6.7.8"], ["dnsbl.somelist.net", "dnsbl.someotherlist.net"]);
// [
// {address: "1.2.3.4", blacklist: "dnsbl.somelist.net", listed: true},
// {address: "1.2.3.4", blacklist: "dnsbl.someotherlist.net", listed: true},
// {address: "5.6.7.8", blacklist: "dnsbl.somelist.net", listed: false},
// {address: "5.6.7.8", blacklist: "dnsbl.someotherlist.net", listed: false}
// ]address: string an IP address.blacklist: string the hostname of the blacklist to query.
Returns a Promise that resolves to true or false, indicating if the address is listed (i.e. the DNS query returned a non-empty result). DNS errors and timeouts resolve to false, or to {listed: false, txt: []} if includeTxt is set. A failed TXT query yields txt: [] without affecting listed. An invalid address or server rejects.
If the includeTxt option is set, it will return an Object with these properties:
listedboolean - a boolean indicating if the address is listed on the blacklist.txtstring[][] - an array of resolved TXT records for the address.
addressesstring or Array - one or more IP addresses.blacklistsstring or Array - one or more blacklist hostnames.
Returns a Promise that resolves to a results object (see below).
serversstring or Array - DNS servers to use. Pass a falsy value to use the system resolvers. Default:["208.67.220.220", "208.67.222.222", "2620:119:35::35", "2620:119:53::53"].timeoutnumber - timeout in milliseconds. Default:5000.concurrencynumber - number of concurrent queries. Default:64.includeTxtboolean - include txt records if IP is blacklisted. Default:false.
The results object is an array of objects with these properties:
addressstring - the IP address.blackliststring - the blacklist hostname.listedboolean - a boolean indicating if the address is listed on the blacklist.txtstring[][] - an array of resolved TXT records for the address, only present ifincludeTxtis set.
© silverwind, distributed under BSD licence