> 웹 프론트엔드 > JS 튜토리얼 > cf-doh: 프런트엔드 자바스크립트에서 DNS 레코드를 조회합니다.

cf-doh: 프런트엔드 자바스크립트에서 DNS 레코드를 조회합니다.

Susan Sarandon
풀어 주다: 2024-10-08 08:22:02
원래의
1033명이 탐색했습니다.

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

최근 Archival 작업을 진행하면서 도메인의 DNS 레코드를 확인해야 할 필요성을 느꼈습니다.

배경

Archival Pro를 사용하면 사용자는 Archival 사이트에서 사용자 정의 도메인을 지정할 수 있습니다. 이러한 사이트에 대해 https를 활성화하기 위해 SSL을 발급하기 전에 TXT 레코드 기반 도메인 확인기를 사용하여 소유권을 확인합니다. 이 프로세스를 더 간단하게 만들기 위해 레코드를 쿼리하여 CNAME 및 TXT 레코드가 올바르게 구성되었는지 확인하고 그렇지 않은 경우 유용한 메시지를 표시해야 했습니다.

node.js 또는 C와 유사한 환경에서는 각 OS에 로컬 DNS 캐시와 조회 도구가 있으므로 이는 매우 간단합니다. 그러나 저는 이것을 실제로 v8 격리이므로 OS의 DNS 시스템에 액세스할 수 없는 cloudflare 작업자에서 실행하고 있었습니다. 실제로 nodejs_compat가 켜져 있어도 노드 stdlib의 dns 라이브러리는 빈 개체를 반환합니다.

DNS-over-HTTPS

약간 조사한 후에 최신 DNS-over-HTTPS가 이 문제에 적합하고 제한된 경우 외에 다른 용도로 사용할 수 있다는 것을 깨달았습니다. 하지만 저는 이 사용 사례에서 npm의 어떤 라이브러리도 마음에 들지 않았습니다. 제가 원했던 것은 조회 서버를 추상화하는 노드의 DNS 라이브러리와 더 유사한 것이었습니다.

Cloudflare는 DNS-over-HTTP 솔루션을 제공하며 이에 대한 내용은 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: 프런트엔드 자바스크립트에서 DNS 레코드를 조회합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿