最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用JS實現在線域名DNS查詢工具

 更新時間:2026年03月16日 09:59:39   作者:滕青山博客  
本文介紹了本項目中域名DNS查詢工具的功能實現,使用Vue組織交互狀態(tài),通過DoH查詢DNS記錄,并將結果整理成可展示的表格數據,核心功能包括輸入規(guī)范化、查詢觸發(fā)、結果渲染等,并詳細描述了前端和后端的處理邏輯,需要的朋友可以參考下

這篇文章只講本項目里域名DNS查詢工具的功能 JS 實現。整個工具用 Vue 組織交互狀態(tài),查詢端走 DoH(DNS over HTTPS),最終把 DNS 記錄整理成可直接展示的表格數據。

核心鏈路很簡單:

輸入域名 -> 規(guī)范化與校驗 -> 發(fā)起查詢 -> 解析應答 -> 渲染記錄

在線工具網址:https://see-tool.com/dns-query
工具截圖:

1)輸入先做規(guī)范化,避免臟數據進入查詢

前端不會直接拿輸入框原值查詢,而是先做統(tǒng)一處理:轉小寫、去協(xié)議、去路徑、去端口、去結尾點。

const normalizeDomain = (value) => {
  const rawValue = String(value || "")
    .trim()
    .toLowerCase();
  if (!rawValue) return "";
  let cleaned = rawValue.replace(/^https?:\/\//i, "");
  cleaned = cleaned.split("/")[0].split("?")[0].split("#")[0];
  if (cleaned.includes(":")) cleaned = cleaned.split(":")[0];
  return cleaned.replace(/\.$/, "");
};

const isValidDomain = (value) => {
  if (!value || !value.includes(".")) return false;
  return /^[a-z0-9.-]+$/i.test(value);
};

這一步把 https://Example.com:443/path 統(tǒng)一成 example.com,后續(xù)請求參數會穩(wěn)定很多。

2)前端狀態(tài)圍繞“一次查詢”組織

在 Vue 里,核心狀態(tài)包括:

  • domainInput:用戶輸入
  • recordType:記錄類型(默認 1,即 A)
  • dohServer:DoH 服務商(默認 alidns
  • isLoading:查詢中狀態(tài)
  • resultRecordsresultDomain:結果數據

觸發(fā)查詢時會先清空舊結果,再發(fā)請求;請求完成后根據返回值決定展示記錄表格還是“無記錄”提示。Enter 鍵和按鈕點擊共用同一套查詢函數,交互邏輯保持一致。

3)服務端對域名再做一次標準化和校驗

后端會再次處理輸入,保證接口層數據安全、可控。這里做了兩件事:

  1. 允許傳入帶協(xié)議或帶路徑的字符串,并用 URL 做兜底解析
  2. 校驗域名格式,不合法直接返回錯誤

同時接口只接受 POST,并把錯誤按類型轉成明確的狀態(tài)碼,前端可以直接按 message 展示。

4)DoH 查詢的核心是“服務映射 + 類型映射”

工具內部先定義兩張映射表:

  • DoH 服務商映射:alidnsdnspod、360google、cloudflare
  • DNS 類型映射:1(A)28(AAAA)、5(CNAME)、16(TXT)、2(NS)6(SOA)

查詢時先檢查映射是否存在,不存在直接拋出 INVALID_DOHINVALID_TYPE,避免發(fā)出無效請求。

const requestUrl = `${server.url}?name=${encodeURIComponent(name)}&type=${encodeURIComponent(typeKey)}`;
const response = await fetchWithTimeout(
  requestUrl,
  {
    method: "GET",
    headers: { Accept: "application/dns-json" },
  },
  10000,
);

這里統(tǒng)一用超時封裝后的請求函數,避免上游響應異常時長時間卡住。

5)把 DoH 原始應答轉換成頁面可用結構

DoH 返回里真正要展示的是 Answer 數組。實現里會做一次輕量轉換:保留原字段,同時補一個 typename,把數字類型改成可讀字符串。

const parseAnswerList = (data) => {
  if (!data || !Array.isArray(data.Answer)) return [];
  return data.Answer.map((row) => ({
    ...row,
    typename: DNS_TYPES[String(row.type)] || String(row.type),
  }));
};

這樣前端渲染時可以直接顯示:主機名、類型、記錄值、TTL,不需要再做二次轉換。

6)錯誤處理按“可定位”設計

這套實現把錯誤分成幾類:

  • 參數錯誤:如類型非法、DoH 非法
  • 上游響應錯誤:如返回體不是合法 JSON
  • 請求失?。荷嫌尾豢蛇_或超時

接口會返回統(tǒng)一結構,前端只需要讀取 statusmessage 就能完成提示。

7)這套功能 JS 的關鍵點

這個工具的核心不在“把 DNS 查出來”本身,而在于把查詢鏈路標準化:輸入規(guī)范化、參數校驗、DoH 請求、應答轉換、結果直出。對用戶來說是一次點擊;對實現來說是一條清晰的數據處理流水線。

以上就是利用JS實現在線域名DNS查詢工具的詳細內容,更多關于JS在線域名DNS查詢的資料請關注腳本之家其它相關文章!

相關文章

  • JavaScript獲得url所有參數鍵值表的方法

    JavaScript獲得url所有參數鍵值表的方法

    這篇文章主要介紹了JavaScript獲得url所有參數鍵值表的方法,實例分析了javascript操作URL的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • JS打字效果的動態(tài)菜單代碼分享

    JS打字效果的動態(tài)菜單代碼分享

    這篇文章主要介紹了JS打字效果的動態(tài)菜單,推薦給大家,有需要的小伙伴可以參考下。
    2015-08-08
  • 讓innerText在firefox火狐和IE瀏覽器都能用的寫法

    讓innerText在firefox火狐和IE瀏覽器都能用的寫法

    下面的代碼主要是用來解決firefox瀏覽器不支持innerText的問題,需要的朋友可以參考下。
    2011-05-05
  • jquery實現左右滑動式輪播圖

    jquery實現左右滑動式輪播圖

    這篇文章主要為大家詳細介紹了jquery實現左右滑動式輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 原生Javascript和jQuery做輪播圖簡單例子

    原生Javascript和jQuery做輪播圖簡單例子

    這篇文章主要為大家詳細介紹了原生Javascript和jQuery做輪播圖簡單例子,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 原生JS 實現的input輸入時表格過濾操作示例

    原生JS 實現的input輸入時表格過濾操作示例

    這篇文章主要介紹了原生JS 實現的input輸入時表格過濾操作,結合實例形式分析了JavaScript基于頁面元素遍歷、運算、判斷實現的表格過濾相關操作技巧,需要的朋友可以參考下
    2019-08-08
  • 前端請求并發(fā)和請求覆蓋的解決方法

    前端請求并發(fā)和請求覆蓋的解決方法

    最近在開發(fā)一些大屏,涉及到比較多的數據來源,接口也沒有做聚合,導致頁面需要調很多接口來填充頁面數據,那么就會有接口并發(fā)的問題出現,所以本文給大家介紹了如何解決前端請求并發(fā)和請求覆蓋,需要的朋友可以參考下
    2024-10-10
  • js通過window.open(url)下載文件并修改文件名

    js通過window.open(url)下載文件并修改文件名

    這篇文章主要給大家介紹了關于js如何通過window.open(url)下載文件并修改文件名的相關資料,我們知道下載文件是一個非常常見的需求,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • 對于input 框限定輸入值為浮點型的js代碼

    對于input 框限定輸入值為浮點型的js代碼

    下面小編就為大家?guī)硪黄獙τ趇nput 框限定輸入值為浮點型的js代碼。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解webpack運行Babel教程

    詳解webpack運行Babel教程

    這篇文章主要介紹了詳解webpack運行Babel教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06

最新評論

定西市| 余干县| 山阳县| 海安县| 泸西县| 贺州市| 白城市| 南通市| 平阴县| 余江县| 周至县| 咸丰县| 尉犁县| 平阳县| 阳城县| 息烽县| 毕节市| 镇江市| 织金县| 隆昌县| 大名县| 沂源县| 永和县| 宽城| 城口县| 桦川县| 曲松县| 石狮市| 商水县| 浙江省| 桓台县| 吉木萨尔县| 紫阳县| 辛集市| 怀远县| 米林县| 饶河县| 营山县| 通化县| 阜南县| 郴州市|