Cara Menggunakan Geekflare DNS Lookup API di JavaScript (NodeJS)
Diterbitkan: 2022-10-07Dalam tutorial ini, saya akan menunjukkan cara menggunakan Geekflare API di NodeJS untuk memeriksa catatan DNS dari domain apa pun.
Kami akan membuat skrip sederhana yang, ketika dijalankan, mencetak alamat IP dari server Pencarian Google.
Script ini akan menggunakan Geekflare DNS Lookup API.
Untuk membangunnya, kita akan menggunakan tiga pendekatan, yang pertama menggunakan modul https
bawaan di NodeJS. Yang kedua akan menggunakan modul node-fetch
. Kemudian yang terakhir akan menggunakan library axios
client.
Apa itu Geekflare API?
Geekflare API menawarkan setelan REST API untuk kinerja situs web, DNS, dan pengujian metrik keamanan. Anda dapat melakukan hal-hal seperti mengambil tangkapan layar, menghasilkan PDF, melakukan pengikisan web, pemindaian port, dan banyak lagi.
Prasyarat
Untuk mengikuti tutorial ini, Anda memerlukan pemahaman tentang JavaScript, termasuk janji dan sintaks ES6. Adapun perangkat lunak, Anda harus menginstal NodeJS dan editor teks seperti Visual Studio Code.
Anda akan memerlukan akun Geekflare untuk mendapatkan kunci API untuk otentikasi saat membuat permintaan. Untuk mendapatkannya, buka halaman arahan API dan buat akun gratis.
Setelah Anda membuat akun, Anda akan diarahkan ke dasbor, di mana Anda akan menemukan kunci API Anda.

Membangun proyek
Untuk memulai, buat folder proyek dan buka dengan terminal pilihan Anda, lalu jalankan perintah di bawah ini.
npm init -y
Perintah di atas akan menginisialisasi direktori proyek sebagai proyek NodeJS.
Selanjutnya, jalankan perintah di bawah ini, yang akan menginstal semua dependensi untuk proyek kami
npm install dotenv axios node-fetch
Setelah dependensi berhasil diinstal, buat tiga skrip di folder root proyek yaitu vanilla.js
, with-axios.js
, with-fetch.js
dan file .env
untuk menyimpan variabel lingkungan kita.
Pada akhirnya, root proyek akan terlihat seperti ini:

Selanjutnya, buka file .env
dan tambahkan kunci API Geekflare Anda dengan baris kode berikut:
API_KEY=<api key>
Ganti <API key>
dengan kunci API Anda yang sebenarnya.
vanila.js
NodeJS memiliki modul http
dan https
bawaan yang dapat kita gunakan untuk membuat permintaan klien. Kami akan menggunakan pendekatan ini terlebih dahulu.
Buka file vanilla.js dan tambahkan baris kode berikut di bagian atas untuk mengimpor dependensi proyek.
import { request } from "https"; import { config } from "dotenv";
Selanjutnya, kita akan memanggil fungsi config()
untuk memuat variabel lingkungan. Kemudian kita akan menyimpan kunci API dan nama host dalam variabel.
config(); const apiKey = process.env.API_KEY; const host = 'google.com';
Saat kita memanggil fungsi permintaan untuk memulai permintaan HTTP di NodeJS, kita perlu menyediakan opsi untuk host dan titik akhir yang ingin kita sambungkan, metode HTTP yang akan kita gunakan, dan header untuk permintaan. Jadi selanjutnya, kita akan membuat variabel yang akan menyimpan opsi ini.
const options = { hostname: "api.geekflare.com", path: "/dnsrecord", method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey, }, };
Sejauh ini, kode dalam file vanilla.js
terlihat seperti ini:
import { request } from "https"; import { config } from "dotenv"; config(); const apiKey = process.env.API_KEY; const host = 'google.com' const options = { hostname: "api.geekflare.com", path: "/dnsrecord", method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey, }, };
Sekarang kita dapat melanjutkan untuk memanggil fungsi permintaan dengan meneruskan metode opsi:
const req = request(options, response => { // we are going to add response handlers here });
Seperti yang Anda lihat, fungsi permintaan mengambil dua argumen. Yang pertama adalah objek pilihan yang kita definisikan sebelumnya. Yang kedua adalah fungsi callback yang akan menangani respon dari server. Di dalam fungsi callback, kita bisa menambahkan event listener saat server mengirim data, selesai mengirim data, atau mengirim error.
Untuk menambahkan penangan respons yang berbeda, tambahkan baris kode berikut di dalam fungsi panggilan balik:
let data = ""; response.on("data", chunk => { data += chunk; }); response.on("end", () => { console.log(JSON.parse(data).data.A); }); response.on("error", error => { console.log(error); });
Variabel data hanyalah sebuah string di mana kita akan menyimpan respons JSON server saat di-streaming kembali ke kita.
Untuk benar-benar menyimpan data, kita akan mendengarkan objek respons on data
. Setiap kali acara ini diaktifkan, kami akan menambahkan potongan data yang dikirim oleh server ke variabel data.
Kemudian untuk akhirnya menggunakan data, kita akan mendengarkan acara on end
pada objek respons. Ini akan dipanggil ketika semua data telah dikirim dari server, dan telah mengakhiri responsnya.
Terakhir, kita akan mendengarkan kesalahan dan mencatatnya ke konsol jika muncul.
Oleh karena itu panggilan ke fungsi permintaan akan terlihat seperti ini
const req = request(options, response => { let data = ""; response.on("data", chunk => { data += chunk; }); response.on("end", () => { console.log(JSON.parse(data).data.A); }); response.on("error", error => { console.log(error); }); });
Terakhir, kita perlu menulis beberapa data ke badan permintaan dan mengakhiri permintaan.
req.write(JSON.stringify({ url: host, types: ["A"] })); req.end();
Pada akhirnya, file tersebut akan terlihat seperti ini:
import { request } from "https"; import { config } from "dotenv"; config(); const apiKey = process.env.API_KEY; const host = 'google.com' const options = { hostname: "api.geekflare.com", path: "/dnsrecord", method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey, }, }; const req = request(options, response => { let data = ""; response.on("data", chunk => { data += chunk; }); response.on("end", () => { console.log(JSON.parse(data).data.A); }); response.on("error", error => { console.log(error); }); }); req.write(JSON.stringify({ url: host, types: ["A"] })); req.end();
Sekarang, jika Anda kembali ke terminal dan menjalankan skrip menggunakan perintah node vanilla.js
, Anda akan mendapatkan output berikut.

[ { address: '172.253.122.101', ttl: 247 }, { address: '172.253.122.113', ttl: 247 }, { address: '172.253.122.100', ttl: 247 }, { address: '172.253.122.102', ttl: 247 }, { address: '172.253.122.138', ttl: 247 }, { address: '172.253.122.139', ttl: 247 } ]
Itu saja untuk bagian pertama. Kerugian yang jelas dari menggunakan modul HTTP/S built-in adalah verbose. Pustaka klien seperti node-fetch
akan membantu Anda membuat program yang sama tetapi dengan kode yang lebih jelas dan ringkas.
pengambilan simpul
Untuk membuat skrip yang sama tetapi dengan node-fetch
, buka file with-fetch.js
dan tambahkan impor berikut ke atas.
import fetch from "node-fetch"; import { config } from "dotenv";
Kemudian panggil fungsi config untuk mengonfigurasi variabel lingkungan dan mengatur konstanta untuk API_KEY dan host yang catatan A-nya akan kita minta.
config(); const apiKey = process.env.API_KEY; const host = 'google.com'
Selanjutnya, kita akan mendefinisikan fungsi untuk membuat panggilan API. Fungsi ini akan menjadi asinkron.
async function request() { // The function body will go here }
Di dalam badan fungsi, kita perlu memanggil fungsi fetch
yang kita impor sebelumnya dari paket node-fetch
.
const response = await fetch("https://api.geekflare.com/dnsrecord", { method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey, }, body: JSON.stringify({ url: host, types: ["A"] }), });
Kemudian setelah panggilan ke fungsi fetch
, kami ingin mengurai respons kami dan menangani kesalahan apa pun yang mungkin muncul.
if (response.ok) { const { data } = await response.json(); console.log(data.A); } else { console.log(response); }
Pada titik ini, tambahkan panggilan ke fungsi setelah permintaannya.
request();
File Anda sekarang akan terlihat seperti ini:
import fetch from "node-fetch"; import { config } from "dotenv"; config(); const apiKey = process.env.API_KEY; const host = "google.com"; async function request() { const response = await fetch("https://api.geekflare.com/dnsrecord", { method: "POST", headers: { "Content-Type": "application/json", "x-api-key": apiKey, }, body: JSON.stringify({ url: host, types: ["A"] }), }); if (response.ok) { const { data } = await response.json(); console.log(data.A); } else { console.log(response); } } request();
Dan menjalankan skrip itu dengan node with-fetch.js
akan menghasilkan output berikut:
[ { address: '172.253.122.113', ttl: 134 }, { address: '172.253.122.138', ttl: 134 }, { address: '172.253.122.100', ttl: 134 }, { address: '172.253.122.139', ttl: 134 }, { address: '172.253.122.102', ttl: 134 }, { address: '172.253.122.101', ttl: 134 } ]
aksio
Terakhir, kita akan menggunakan Axios untuk mengakses Geekflare API. Untuk memulai, mari impor paket dotenv
dan axios
.
import axios from "axios"; import { config } from "dotenv";
Selanjutnya, panggil fungsi config
untuk mengatur variabel lingkungan. Selain itu, mari simpan nama host dan Kunci API dalam konstanta terpisah.
const host = "google.com"; const key = process.env.API_KEY;
Sekarang, mari simpan URL titik akhir API di konstanta lain
const url = "https://api.geekflare.com/dnsrecord";
Selanjutnya, mari kita simpan data yang akan dikirim sebagai bagian dari badan permintaan di konstanta lain
const data = { url: host, types: ["A"] };
Kemudian hal terakhir yang harus dilakukan sebelum mengirim permintaan adalah juga menyimpan opsi meta, seperti header, di konstanta lain.
const options = { headers: { "Content-Type": "application/json", "x-api-key": key, }, };
Terakhir, mari kita lakukan panggilan ke fungsi post
yang kita impor sebelumnya, dengan meneruskan variabel url
, data
dan options
yang kita definisikan sebelumnya sebagai argumen. Karena ini akan mengembalikan janji, Anda kemudian dapat menggunakan then
untuk menangani respons ketika akhirnya dikembalikan.
axios.post(url, data, options).then(({ data }) => { console.log(data.data.A); });
Di akhir semua ini, kode dalam file with-axios
akan terlihat seperti ini:
import axios from "axios"; import { config } from "dotenv"; config(); const host = "google.com"; const key = process.env.API_KEY; const url = "https://api.geekflare.com/dnsrecord"; const data = { url: host, types: ["A"] }; const options = { headers: { "Content-Type": "application/json", "x-api-key": key, }, }; axios.post(url, data, options).then(({ data }) => { console.log(data.data.A); });
Dan ketika Anda menjalankan skrip menggunakan node with-axios.js
, itu akan menampilkan output berikut:
[ { address: '142.251.163.138', ttl: 60 }, { address: '142.251.163.113', ttl: 60 }, { address: '142.251.163.100', ttl: 60 }, { address: '142.251.163.101', ttl: 60 }, { address: '142.251.163.102', ttl: 60 }, { address: '142.251.163.139', ttl: 60 } ]
Kata-kata Terakhir
Dalam posting ini, kami membuat skrip dengan tiga pendekatan berbeda. Tujuannya adalah untuk menyoroti betapa mudahnya menggunakan Geekflare API, dan bagaimana kita dapat menggunakannya dalam Javascript, khususnya NodeJS.
Jelajahi dokumentasi Geekflare API untuk informasi lebih lanjut.