DNS Extractor
Pricing
Pay per usage
Go to Store
DNS Extractor
Gets the IP addresses & *Reverse DNS from an input url. *Reverse DNS is IP address to domain name mapping - the opposite of forward (normal) DNS which maps domain names to IP addresses.
0.0 (0)
Pricing
Pay per usage
2
Total users
111
Monthly users
6
Runs succeeded
0%
Last modified
3 years ago
Dockerfile
# This is a template for a Dockerfile used to run acts in Actor system.# The base image name below is set during the act build, based on user settings.# IMPORTANT: The base image must set a correct working directory, such as /usr/src/app or /home/userFROM apify/actor-node-puppeteer
# Second, copy just package.json and package-lock.json since it should be# the only file that affects "npm install" in the next step, to speed up the buildCOPY package*.json ./
# Install NPM packages, skip optional and development dependencies to# keep the image small. Avoid logging too much and print the dependency# tree for debuggingRUN npm --quiet set progress=false \ && npm install --only=prod --no-optional \ && echo "Installed NPM packages:" \ && (npm list --all || true) \ && echo "Node.js version:" \ && node --version \ && echo "NPM version:" \ && npm --version
# Copy source code to container# Do this in the last step, to have fast build if only the source code changedCOPY . ./
# NOTE: The CMD is already defined by the base image.# Uncomment this for local node inspector debugging:# CMD [ "node", "--inspect=0.0.0.0:9229", "main.js" ]
package.json
{ "name": "apify-project", "version": "0.0.1", "description": "", "author": "It's not you it's me", "license": "ISC", "dependencies": { "apify": "latest" }, "scripts": { "start": "node main.js" }}
main.js
1const Apify = require('apify');2const { URL } = require('url');3const { promisify } = require('util');4const { lookup, resolveAny, reverse } = require('dns');5
6const { log, dir } = console;7const [dnsLookup, dnsResolve, dnsReverse] = [8 lookup,9 resolveAny,10 reverse,11].map(promisify);12
13Apify.main(async () => {14 const input = await Apify.getValue('INPUT');15 log(input);16
17 const { url } = input;18 if (!url) throw Error('No input URL');19 log('Input URL:', url);20
21 const protocol = 'http://';22 const parsedUrl = `${/http/.test(url) ? '' : protocol}${url}`;23
24 const { host, origin } = new URL(parsedUrl);25 log('URL host:', host);26 log('URL origin:', origin);27
28 const output = { origin, host };29
30 let shouldTryReverse = true;31 try {32 Object.assign(output, {33 hostIp: await dnsLookup(host),34 hostResolve: await dnsResolve(host),35 });36 } catch (error) {37 log(error.message);38 Object.assign(output, { error: error.message });39 shouldTryReverse = false;40 }41
42 if (shouldTryReverse) {43 try {44 Object.assign(output, {45 hostReverse: await dnsReverse(output.hostIp.address),46 });47 } catch (error) {48 log('Error DNS Reverse', error.message);49 }50 }51
52 log('Output result:');53 dir(output);54 await Apify.setValue('OUTPUT', output);55});