최근 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가 이 문제에 적합하고 제한된 경우 외에 다른 용도로 사용할 수 있다는 것을 깨달았습니다. 하지만 저는 이 사용 사례에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!