Tin tức và phân tích của tất cả các thiết bị di động

Cách sử dụng newsblog.pl API tra cứu DNS trong JavaScript (NodeJS)

Trong hướng dẫn này, tôi sẽ trình bày cách sử dụng newsblog.pl API trong NodeJS để kiểm tra bản ghi DNS của bất kỳ tên miền nào.

Chúng tôi sẽ xây dựng một tập lệnh đơn giản mà khi chạy sẽ hiển thị địa chỉ IP của máy chủ tìm kiếm Google.

Tập lệnh này sẽ sử dụng API tra cứu DNS newsblog.pl.

Để xây dựng nó, chúng tôi sẽ sử dụng ba cách tiếp cận, cách đầu tiên sử dụng mô-đun https tích hợp trong NodeJS. Cái thứ hai sẽ sử dụng trình tải nút. Sau đó, cái cuối cùng sẽ sử dụng thư viện máy khách axios.

API newsblog.pl là gì?

newsblog.pl API cung cấp các gói API REST để kiểm tra hiệu suất trang web, DNS và các chỉ số bảo mật. Bạn có thể thực hiện những việc như chụp ảnh màn hình, tạo tệp PDF, quét web, quét cổng, v.v.

điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn sẽ cần hiểu biết về JavaScript, bao gồm cả các lời hứa và cú pháp ES6. Đối với phần mềm, bạn nên cài đặt NodeJS và trình soạn thảo văn bản như Visual Studio Code.

Bạn sẽ cần có tài khoản newsblog.pl để lấy khóa API nhằm xác thực khi thực hiện yêu cầu. Để có được nó, hãy truy cập trang đích API và đăng ký một tài khoản miễn phí.

Sau khi tạo tài khoản, bạn sẽ được chuyển hướng đến trang tổng quan nơi bạn sẽ tìm thấy khóa API của mình.

Xây dựng dự án

Để bắt đầu, hãy tạo một thư mục dự án và mở nó bằng thiết bị đầu cuối bạn chọn, sau đó chạy lệnh bên dưới.

npm init -y

Lệnh trên sẽ khởi tạo thư mục dự án dưới dạng dự án NodeJS.

Sau đó chạy lệnh bên dưới để cài đặt tất cả các phụ thuộc cho dự án của chúng tôi

npm install dotenv axios node-fetch

Sau khi cài đặt thành công các phần phụ thuộc, hãy tạo ba tập lệnh trong thư mục gốc của dự án, đó là vanilla.js, with-axios.js, with-fetch.js và một tệp .env để lưu trữ các biến môi trường của chúng ta.

Cuối cùng, thư mục gốc của dự án sẽ trông như thế này:

Sau đó mở tệp .env và thêm khóa API newsblog.pl của bạn với dòng mã sau:

API_KEY=<api key>

Thay thế bằng khóa API hiện tại của bạn.

vani.js

NodeJS có một mô-đun http và https tích hợp mà chúng ta có thể sử dụng để thực hiện các yêu cầu của khách hàng. Chúng tôi sẽ sử dụng phương pháp này đầu tiên.

Mở tệp vanilla.js và thêm các dòng mã sau vào đầu để nhập các phần phụ thuộc của dự án.

import { request } from "https";
import { config } from "dotenv";

Tiếp theo, chúng ta sẽ gọi config() để tải các biến môi trường. Tiếp theo, chúng tôi sẽ lưu trữ khóa API và tên máy chủ trong các biến.

config();

const apiKey = process.env.API_KEY;
const host="google.com";

Khi gọi hàm yêu cầu để chạy một yêu cầu HTTP trong NodeJS, chúng ta sẽ cần cung cấp các tùy chọn cho máy chủ lưu trữ và điểm cuối mà chúng ta muốn kết nối, phương thức HTTP mà chúng ta sẽ sử dụng và tiêu đề yêu cầu. Vì vậy, bây giờ chúng ta sẽ tạo một biến để giữ các tùy chọn này.

const options = {
  hostname: "api.newsblog.pl.com",
  path: "/dnsrecord",
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": apiKey,
  },
};

Cho đến nay mã vanilla.js trông như thế này:

import { request } from "https";
import { config } from "dotenv";

config();

const apiKey = process.env.API_KEY;
const host="google.com"

const options = {
  hostname: "api.newsblog.pl.com",
  path: "/dnsrecord",
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": apiKey,
  },
};

Bây giờ chúng ta có thể tiến hành gọi hàm yêu cầu chuyển tiếp trong phương thức tùy chọn:

const req = request(options, response => {

  // we are going to add response handlers here

});

Như bạn có thể thấy, hàm yêu cầu có hai đối số. Đầu tiên là đối tượng tùy chọn mà chúng ta đã xác định trước đó. Thứ hai là chức năng gọi lại sẽ xử lý phản hồi từ máy chủ. Bên trong chức năng gọi lại, chúng ta có thể thêm trình xử lý sự kiện khi máy chủ gửi dữ liệu, gửi dữ liệu xong hoặc gửi lỗi.

Để thêm các trình xử lý phản hồi khác nhau, hãy thêm các dòng mã sau vào hàm gọi lại:

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);
});

Biến dữ liệu chỉ đơn giản là một chuỗi nơi chúng tôi sẽ lưu trữ phản hồi JSON của máy chủ khi nó được truyền trực tuyến cho chúng tôi.

Để thực sự lưu trữ dữ liệu, chúng tôi sẽ lắng nghe đối tượng phản hồi về sự kiện dữ liệu. Mỗi khi sự kiện này kích hoạt, chúng tôi sẽ nối thêm đoạn dữ liệu do máy chủ gửi vào biến dữ liệu.

Sau đó, để cuối cùng sử dụng dữ liệu, chúng tôi lắng nghe sự kiện ở cuối đối tượng phản hồi. Điều này sẽ được gọi khi tất cả dữ liệu đã được gửi từ máy chủ và nó sẽ kết thúc phản hồi của nó.

Cuối cùng, chúng tôi sẽ lắng nghe các lỗi và ghi chúng vào bảng điều khiển nếu chúng xảy ra.

Vì vậy, lệnh gọi hàm yêu cầu sẽ giống như thế này

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);
  });

});

Cuối cùng, chúng ta cần lưu trữ một số dữ liệu trong phần thân yêu cầu và hoàn thành yêu cầu.

req.write(JSON.stringify({ url: host, types: ["A"] }));
req.end();

Cuối cùng, tệp sẽ trông như thế này:

import { request } from "https";
import { config } from "dotenv";

config();

const apiKey = process.env.API_KEY;
const host="google.com"

const options = {
  hostname: "api.newsblog.pl.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();

Bây giờ nếu bạn quay lại thiết bị đầu cuối và chạy tập lệnh với nút vanilla.js, bạn sẽ nhận được đầu ra sau.

[
  { 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 }
]

Đó là nó cho phần đầu tiên. Nhược điểm rõ ràng của việc sử dụng các mô-đun HTTP/S tích hợp là chúng dài dòng. Các thư viện máy khách như tìm nạp nút sẽ giúp bạn tạo chương trình tương tự nhưng với mã rõ ràng và ngắn gọn hơn.

tải xuống nút

Để tạo cùng một tập lệnh nhưng tìm nạp các nút, hãy mở tệp with-fetch.js và thêm các mục nhập sau vào đầu.

import fetch from "node-fetch";
import { config } from "dotenv";

Sau đó, gọi hàm config để định cấu hình các biến môi trường và đặt các hằng số cho API_KEY và máy chủ lưu trữ có bản ghi A mà chúng tôi sẽ yêu cầu.

config();

const apiKey = process.env.API_KEY;
const host="google.com"

Tiếp theo, chúng tôi sẽ xác định một chức năng sẽ thực hiện lệnh gọi API. Chức năng này sẽ không đồng bộ.

async function request() {
  // The function body will go here
}

Bên trong thân hàm, chúng ta cần gọi hàm tìm nạp mà chúng ta đã nhập trước đó từ gói tìm nạp nút.

const response = await fetch("https://api.newsblog.pl.com/dnsrecord", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "x-api-key": apiKey,
    },
    body: JSON.stringify({ url: host, types: ["A"] }),
});

Sau đó, sau khi tìm nạp được gọi, chúng tôi muốn phân tích cú pháp phản hồi của mình và xử lý bất kỳ lỗi nào có thể xảy ra.

if (response.ok) {
    const { data } = await response.json();

    console.log(data.A);
  } else {
    console.log(response);
  }

Tại thời điểm này, hãy thêm lệnh gọi hàm sau khi yêu cầu.

request();

Tệp của bạn bây giờ sẽ trông như thế này:

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.newsblog.pl.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();

Chạy tập lệnh này với nút with-fetch.js sẽ cho kết quả sau:

[
  { 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 }
]

trục

Cuối cùng, chúng ta sẽ sử dụng Axios để truy cập API newsblog.pl. Trước tiên, hãy nhập các gói dotenv và axios.

import axios from "axios";
import { config } from "dotenv";

Tiếp theo, hãy gọi hàm cấu hình để đặt các biến môi trường. Ngoài ra, hãy lưu trữ tên máy chủ và khóa API trong các hằng số riêng biệt.

const host = "google.com";
const key = process.env.API_KEY;

Bây giờ, hãy lưu trữ URL của điểm cuối API trong một hằng số khác

const url = "https://api.newsblog.pl.com/dnsrecord";

Tiếp theo, hãy lưu trữ dữ liệu sẽ được gửi như một phần của nội dung yêu cầu trong một hằng số khác

const data = { url: host, types: ["A"] };

Sau đó, điều cuối cùng cần làm trước khi gửi yêu cầu cũng sẽ là lưu trữ các tùy chọn meta như tiêu đề trong một hằng số khác.

const options = {
  headers: {
    "Content-Type": "application/json",
    "x-api-key": key,
  },
};

Cuối cùng, hãy gọi hàm post mà chúng ta đã nhập trước đó, chuyển các biến url, dữ liệu và tùy chọn mà chúng ta đã xác định trước đó làm đối số. Vì điều này sẽ trả lại một lời hứa, nên bạn có thể sử dụng điều này để xử lý phản hồi khi nó được trả lại cuối cùng.

axios.post(url, data, options).then(({ data }) => {
  console.log(data.data.A);
});

Cuối cùng, mã trong tệp with-axios sẽ giống như sau:

import axios from "axios";
import { config } from "dotenv";

config();
const host = "google.com";
const key = process.env.API_KEY;

const url = "https://api.newsblog.pl.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);
});

Và khi bạn chạy tập lệnh bằng nút with-axios.js, tập lệnh sẽ hiển thị đầu ra sau:

[
  { 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 }
]

những từ cuối

Trong bài đăng này, chúng tôi đã tạo một tập lệnh với ba cách tiếp cận khác nhau. Mục đích của việc này là để làm nổi bật việc sử dụng API newsblog.pl dễ dàng như thế nào và cách chúng tôi có thể sử dụng nó trong JavaScript, cụ thể là NodeJS.

Xem tài liệu API newsblog.pl để biết thêm thông tin.