ホームページ > ウェブフロントエンド > jsチュートリアル > cf-doh: フロントエンド JavaScript から DNS レコードを検索します

cf-doh: フロントエンド JavaScript から DNS レコードを検索します

Susan Sarandon
リリース: 2024-10-08 08:22:02
オリジナル
1033 人が閲覧しました

cf-doh: look up DNS records from your frontend javascript

最近、アーカイブに取り組んでいるときに、ドメインの DNS レコードを確認する必要があることに気づきました。

背景

Archival Pro を使用すると、ユーザーはアーカイブ サイトでカスタム ドメインを指定できます。これらのサイトで https を有効にするために、SSL を発行する前に TXT レコード ベースのドメイン検証ツールを使用して所有権を検証します。このプロセスを簡素化するには、レコードをクエリして CNAME レコードと TXT レコードが正しく構成されているかどうかを確認し、構成されていない場合は役立つメッセージを表示する必要がありました。

node.js または C のような環境では、各 OS にローカル DNS キャッシュとルックアップ ツールがあるため、これは非常に簡単です。ただし、これをcloudflareワーカーで実行していましたが、これは実際にはv8アイソレートであるため、OSのDNSシステムにアクセスできません。実際、nodejs_compat がオンになっている場合でも、ノードの stdlib の DNS ライブラリは空のオブジェクトを返すだけです。

DNS-over-HTTPS

少し調べた結果、最新の DNS-over-HTTPS がこの問題に適しており、私の狭いケース以外にも用途があることがわかりました。ただし、このユースケースでは、npm のライブラリはどれも気に入りませんでした。私が欲しかったのは、ルックアップ サーバーを抽象化する、ノードの DNS ライブラリに似たものでした。

Cloudflare は、DNS-over-HTTPs ソリューションを提供しています。これについては、https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/

で参照できます。

この API の主な欠点は、平均的なユーザーにとっては少々不透明である可能性があることです。ステータス コードは仕様にマッピングされた数値として返され、応答形式は質問と回答形式であり、次のような詳細なデータが含まれます。便利ではありますが、カジュアルな使用には過剰です。

シンプルなパッケージ

私自身や他の人にとってこれを簡単にするために、cf-doh を公開しました。

これは、ブラウザ、cloudflare ワーカー、または JavaScript が実行されるその他の場所からのレコードのクエリを非常に簡単にするシンプルなライブラリです。これはネイティブのフェッチ実装に依存しており、まだ持っていない場合は設定できるため、必要に応じてポリフィルされた whatwg フェッチ実装をノード内で実行することもできます。ただし、ノード内にいる場合は、おそらくあなたが望むものであるnode:dnsがあります。

このライブラリは、フェッチ呼び出しのラップに加えて、仕様全体の完全な型を提供し、引用符で囲まれた文字列応答を処理し、http エラーとステータス応答を例外に変換します。

使い方は簡単です:

import { queryDNS } from "cf-doh";

const records = await queryDNS("_verification.jesseditson.com", "TXT");

records.forEach((r) => console.log(r));
ログイン後にコピー

型付きの値を使用したい場合は、有効なレコード タイプをすべてインポートして、文字列の代わりに使用することもできます。

import { queryDNS, DNSRecordType } from "cf-doh";

const records = await queryDNS("_verification.jesseditson.com", DNSRecordType.TXT);
ログイン後にコピー

NoError 以外のステータスを処理したい場合は、代わりに下位レベルの API を使用できます。

import { queryDNSRecords, DNSRecordType, DOHStatus, DOHStatusMessage } from "cf-doh";

const response = await queryDNSRecords("_verification.jesseditson.com", DNSRecordType.TXT);

switch (response.status) {
  case DOHStatus.NoError:
    console.log("This record exists!");
    break;
  case DOHStatus.NXDomain:
    console.log("Domain wasn't found");
    break;
  default:
    console.log(DOHStatusMessage[response.status]);
    break;
}
ログイン後にコピー

これをプロジェクトに追加するには、npm install --save cf-doh を実行するだけです。ソースまたは完全な API サーフェスに興味がある場合は、リポジトリをチェックしてください:

https://github.com/jesseditson/cf-doh

以上がcf-doh: フロントエンド JavaScript から DNS レコードを検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート