首页
看点啥
插画图片
首页 看点啥 腾讯云HTTPDNS移动解析完全接入指南:从原理到实战

腾讯云HTTPDNS移动解析完全接入指南:从原理到实战

2026-07-14 0

腾讯云移动解析HTTPDNS完全接入指南:从原理到实战

{"type":"doc","content":[{"type":"heading","attrs":{"id":"1fb3b04e-df76-4362-b008-bad03fca82a2","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"1. 引言:移动互联网时代的域名解析之痛"}]},{"type":"paragraph","attrs":{"id":"03547dcb-6b7c-4882-afc2-6c3b525c73b6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在移动互联网快速发展的今天,App的网络请求成功率与响应速度直接影响着用户体验和业务留存。然而,一个经常被开发者忽视的环节——域名解析(DNS),却往往是导致网络请求失败、响应缓慢的罪魁祸首。"}]},{"type":"paragraph","attrs":{"id":"eff1e943-95ff-4c7e-b47d-78121001a039","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"传统的DNS解析基于UDP协议,由各运营商提供的Local DNS服务器负责将域名转换为IP地址。这一机制在PC时代运行良好,但在移动互联网场景下却暴露出诸多问题:域名劫持、跨网访问延迟、解析结果不准确、解析失败率高等。据统计,未接入HTTPDNS的App,其域名资源的访问成功率大致在93%至98%之间。这意味着每100次请求中就有2到7次可能因为DNS问题而失败,对于日活百万、千万级的应用来说,这将是数以万计的用户损失。"}]},{"type":"paragraph","attrs":{"id":"fdc48666-1ace-429f-8819-b5b885014786","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"腾讯云移动解析HTTPDNS正是为解决这一系列问题而生的产品。它基于HTTP协议向腾讯云的DNS服务器发送域名解析请求,替代了基于DNS协议向运营商Local DNS发起解析请求的传统方式。通过这一技术变革,可以有效避免Local DNS造成的域名劫持和跨网访问问题,将域名解析成功率提升至99%以上。本文将带领读者全面了解腾讯云移动解析HTTPDNS的技术原理、接入方法及最佳实践,帮助开发者快速将这项能力集成到自己的应用中。"}]},{"type":"heading","attrs":{"id":"d860b7e2-d267-41f3-af85-a17af2448433","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"2. 技术原理:HTTPDNS如何解决传统DNS的痛点"}]},{"type":"heading","attrs":{"id":"5978d6df-b448-4558-be5f-94748bfaad4b","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"2.1 传统LocalDNS的工作机制与缺陷"}]},{"type":"paragraph","attrs":{"id":"9b3bf05b-54c7-4315-8a13-06c5120b0659","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在理解HTTPDNS之前,有必要先回顾传统DNS的工作原理。当用户在App中发起一个网络请求(如访问www.example.com)时,系统首先需要将域名解析为IP地址。这一过程通常由操作系统向运营商配置的Local DNS服务器发起UDP请求(目标端口53),Local DNS服务器再通过递归查询或迭代查询的方式,从根域名服务器、顶级域名服务器、权威域名服务器逐级获取最终的IP地址,并将结果返回给客户端。"}]},{"type":"paragraph","attrs":{"id":"a681e40b-ea24-452e-a89c-0955e3d653df","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这套体系在互联网发展初期设计时并未充分考虑安全性和移动性,因此存在以下固有缺陷:"}]},{"type":"bulletList","attrs":{"id":"beedfc4f-f291-4472-be07-df9c787a6c36","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"a72db16a-c456-4b09-9cef-fc65aea993cd"},"content":[{"type":"paragraph","attrs":{"id":"99d6b0d1-b58a-4855-9dba-85faf88bf5e4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"域名劫持"},{"type":"text","text":":运营商为节省跨网结算成本或出于其他目的,可能在Local DNS层面将域名强行指向缓存服务器的IP地址。更有甚者,一些不法的Local DNS会直接将域名指向恶意网站,导致用户隐私泄露或遭受钓鱼攻击。"}]}]},{"type":"listItem","attrs":{"id":"da96b12a-1980-4463-ba73-ceb2998e109b"},"content":[{"type":"paragraph","attrs":{"id":"84ee1350-608d-4e9e-b97a-4a150517d6b4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"跨网访问问题"},{"type":"text","text":":Local DNS返回的IP地址可能与客户端实际所在的网络运营商不同。例如,一个联通用户通过电信的Local DNS进行解析,得到的可能是电信机房的IP地址,导致数据需要在不同运营商网络之间绕行,显著增加网络延迟。"}]}]},{"type":"listItem","attrs":{"id":"ff7c20fe-8d7a-4a63-b0d9-ca86b113d048"},"content":[{"type":"paragraph","attrs":{"id":"cd6d286a-7599-4f23-a021-462e8171522e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"解析结果不精准"},{"type":"text","text":":权威DNS服务器通常根据解析请求的来源IP地址来判断客户端的地理位置和运营商归属。但由于Local DNS的存在,权威DNS看到的实际上是Local DNS服务器的IP地址,而非客户端的真实IP,导致返回的解析结果可能与客户端的实际位置相差甚远。"}]}]},{"type":"listItem","attrs":{"id":"75427163-d0f2-4246-9a55-234f778a8f7e"},"content":[{"type":"paragraph","attrs":{"id":"fb816e13-91d8-4541-99bf-3e9771679c16","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"解析成功率低"},{"type":"text","text":":Local DNS服务器可能因为各种原因(配置错误、负载过高、网络故障等)无法正常返回解析结果,直接导致App的网络请求失败。"}]}]}]},{"type":"heading","attrs":{"id":"3eab53d0-62a8-46e7-acf1-e250e5c88e5c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"2.2 HTTPDNS的核心原理"}]},{"type":"paragraph","attrs":{"id":"5d7233a8-8c09-4851-b665-2e52edbfb2df","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"腾讯云移动解析HTTPDNS从根本上改变了域名解析的方式。它的核心思想非常简洁:用HTTP协议替代DNS协议,用腾讯云的DNS服务器替代运营商的Local DNS。"}]},{"type":"paragraph","attrs":{"id":"943ebba3-5cce-428d-a88f-02c1dc583f29","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"具体来说,App客户端不再通过系统默认的DNS解析器向Local DNS发起UDP请求,而是直接通过HTTP或HTTPS协议向腾讯云HTTPDNS服务器(服务地址为119.29.29.99或119.29.29.98)发送域名解析请求。请求参数中包含待解析的域名、授权ID、加密密钥等信息。HTTPDNS服务器收到请求后,基于腾讯云全球领先的DNS集群技术进行解析,并直接将解析结果(即域名对应的IP地址列表)通过HTTP响应返回给客户端。"}]},{"type":"paragraph","attrs":{"id":"9dbebc45-b5a1-47ca-8e3e-54638f196a0c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这一过程中,整个解析链路完全不经过运营商的Local DNS,因此从根本上杜绝了域名劫持的可能。同时,由于HTTPDNS服务器直接感知客户端的真实IP地址(通过HTTP请求的来源IP),权威DNS可以结合客户端的地域、运营商等信息返回最精准的解析结果,实现真正的智能调度。"}]},{"type":"heading","attrs":{"id":"23580a5f-a895-4583-91ca-c25451db85f2","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"2.3 HTTPDNS的核心优势"}]},{"type":"paragraph","attrs":{"id":"a5a3122c-814e-49b8-85e2-9af19aa93ef1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"基于上述原理,腾讯云移动解析HTTPDNS为移动应用带来了以下核心价值:"}]},{"type":"bulletList","attrs":{"id":"035d5249-3d6c-40c2-99d5-1c47c1ace05c","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"e1629a83-5a2a-49f4-abd8-1ac8aff90aaa"},"content":[{"type":"paragraph","attrs":{"id":"7cb6cea6-3ffd-45c1-8159-db3245725d7d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"彻底防劫持"},{"type":"text","text":":绕过Local DNS,从根源上杜绝域名被篡改和劫持的风险。"}]}]},{"type":"listItem","attrs":{"id":"cd9099a7-9c5f-4969-b3ab-64c8106fc05b"},"content":[{"type":"paragraph","attrs":{"id":"724bae04-d2c0-4199-8770-98e23e4f69d3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"精准调度"},{"type":"text","text":":基于客户端真实IP进行解析,确保用户访问到最近、最优的服务器节点。"}]}]},{"type":"listItem","attrs":{"id":"6e9a3bdd-b1a1-4180-a2e0-769cc3d499aa"},"content":[{"type":"paragraph","attrs":{"id":"0d02144c-518a-449f-9915-188c7eb8ffb6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"高可用性"},{"type":"text","text":":腾讯云HTTPDNS服务接入BGP Anycast,实现多地跨机房容灾,服务可用性极高。"}]}]},{"type":"listItem","attrs":{"id":"11123196-3699-4a3c-92c1-2b33c6babc3e"},"content":[{"type":"paragraph","attrs":{"id":"699930ae-4d5c-4648-8e57-4aa49ba03cfd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"解析成功率大幅提升"},{"type":"text","text":":接入HTTPDNS后,域名解析成功率可从93%-98%提升至99%以上。"}]}]},{"type":"listItem","attrs":{"id":"425c5814-6933-4230-9a8e-583f7f979572"},"content":[{"type":"paragraph","attrs":{"id":"602ae8ee-0156-4386-a297-57b9ae95a288","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"支持多种加密方式"},{"type":"text","text":":提供DES、AES、HTTPS三种加密方式,开发者可根据业务需求在安全性与解析速度之间做出权衡。"}]}]}]},{"type":"heading","attrs":{"id":"b3442a18-14ee-43ad-8a9e-548b858a2610","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"3. 开通服务与前期准备"}]},{"type":"paragraph","attrs":{"id":"09568abb-8124-4420-bd65-a483ce4cb448","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在开始接入HTTPDNS之前,需要完成服务开通、域名添加和配置信息获取等准备工作。"}]},{"type":"paragraph","attrs":{"id":"4166ed8a-fbc1-4f4e-a0b7-d958a7e9aa19","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要先登录腾讯云控制台,点击:"},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://cloud.tencent.com/act/cps/redirect?redirect=37484&cps_key=c6c11b1aa9ecc74cc31e4c2c4c34cae9","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"腾讯云控制台"}]},{"type":"heading","attrs":{"id":"ddc9ecb6-e0a4-4abe-9421-42231e9bfce1","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"3.1 开通移动解析HTTPDNS服务"}]},{"type":"paragraph","attrs":{"id":"5008a578-2e70-4316-b9e3-bb512f86fed4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"登录腾讯云控制台后,进入移动解析HTTPDNS产品控制台的概览页面,单击“免费开通”按钮。在弹出的窗口中,勾选同意移动解析服务协议,单击确定即可完成开通操作。开通后,系统将自动为您颁发授权ID和密钥信息,这些信息稍后可在开发配置页面中查看。"}]},{"type":"paragraph","attrs":{"id":"4fe44b48-e631-4c46-b053-42900d85d2aa","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要注意的是,如果您之前已经通过线下方式申请过授权ID和密钥,则需要按照控制台的指引将授权ID与当前账号进行绑定,绑定后才可使用服务地址119.29.29.99/98提供的服务。"}]},{"type":"heading","attrs":{"id":"3d4495c9-aa71-4a58-aba0-1c8afa82dd02","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"3.2 添加解析域名"}]},{"type":"paragraph","attrs":{"id":"da72c702-e10d-4e44-87af-9b53ce08e76b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"服务开通后,还需要在HTTPDNS控制台中添加需要进行解析的域名,否则SDK或API无法正常使用该域名的解析服务。"}]},{"type":"paragraph","attrs":{"id":"88bbd310-eb86-4c26-9bb9-629ebb7305b6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"操作步骤如下:在移动解析HTTPDNS控制台的“域名管理”模块,单击“添加主域名”。在弹出的窗口中填写需要解析的域名,例如tencent.com。需要注意的是,仅需添加主域名,添加后其所有子域名(如www.tencent.com、api.tencent.com等)将自动生效。每个账号支持添加最多200个域名。"}]},{"type":"heading","attrs":{"id":"711fb472-7123-481e-811f-00aea264ad12","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"3.3 获取配置信息"}]},{"type":"paragraph","attrs":{"id":"fa19f563-c64c-42f7-ac5e-ec257012a978","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"开通服务后,移动解析HTTPDNS将为您分配以下配置信息:"}]},{"type":"bulletList","attrs":{"id":"0b6b50b3-8a3d-4cf8-9b7d-6468525af2e6","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"3d4f60e7-bf38-4970-b289-25909c1b7a10"},"content":[{"type":"paragraph","attrs":{"id":"b0d8d38c-171d-4af2-a426-dadd31dc5a63","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"授权ID"},{"type":"text","text":":用于标识您的业务身份,在API请求和SDK初始化中均需使用。"}]}]},{"type":"listItem","attrs":{"id":"f623c520-4e1b-4dd2-a14f-a811e485f20e"},"content":[{"type":"paragraph","attrs":{"id":"82055488-0dc8-485b-8139-5dae70a5092a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"DES加密密钥"},{"type":"text","text":":使用DES加密方式时的密钥。"}]}]},{"type":"listItem","attrs":{"id":"bc76cb7a-1567-4049-a9b3-be1fd20fb90c"},"content":[{"type":"paragraph","attrs":{"id":"eed63849-6823-4c19-a466-f52f564d8b6f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"AES加密密钥"},{"type":"text","text":":使用AES加密方式时的密钥。"}]}]},{"type":"listItem","attrs":{"id":"6140e48c-e6a5-4bf0-bb46-e99661ca50a0"},"content":[{"type":"paragraph","attrs":{"id":"910c172f-c9c4-4e5c-83b7-fd4b2b997bca","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"HTTPS Token"},{"type":"text","text":":使用HTTPS加密方式时的身份验证令牌。"}]}]}]},{"type":"paragraph","attrs":{"id":"f489cd17-6068-46dd-8db1-bf3e7b58f034","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"您可以在移动解析HTTPDNS控制台的“开发配置”页面中查看这些信息。"}]},{"type":"heading","attrs":{"id":"6ef634e3-1e42-4d97-a2c9-efe321b3212a","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"4. 接入方式一:API直接调用"}]},{"type":"paragraph","attrs":{"id":"2fa7c911-5602-4010-ab7c-f87496dab901","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果您的应用不适合集成SDK,或者您希望在服务端进行域名解析,可以直接调用HTTPDNS的公开API接口。HTTPDNS提供了两种加密方式供选择:DES/AES加密和HTTPS加密。"}]},{"type":"heading","attrs":{"id":"870545b1-fdd6-4af4-8ea6-11166f1d3820","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"4.1 HTTPS加密方式(单个查询)"}]},{"type":"paragraph","attrs":{"id":"ca280221-c14d-4368-ad14-cf775dec64f4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"HTTPS加密方式使用标准的HTTPS协议进行通信,安全性最高,但解析速度相对略慢。请求格式如下:"}]},{"type":"codeBlock","attrs":{"id":"fe851090-0996-435b-9eed-3a38593958c8","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"https://119.29.29.99/d?dn=[域名]&token=[HTTPS Token]&ttl=1"}]},{"type":"paragraph","attrs":{"id":"930a7484-3d8a-4c7f-8e9b-a31424006eee","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"参数说明:"}]},{"type":"bulletList","attrs":{"id":"81b19806-fc8f-482c-ab43-efa13fcdc451","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"c5b8cb84-9bc1-48cc-ac09-2a6324e6178a"},"content":[{"type":"paragraph","attrs":{"id":"3116408a-20be-4212-8d83-0efbdf1ebfbc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"dn"},{"type":"text","text":":待解析的域名,需要进行URL编码。"}]}]},{"type":"listItem","attrs":{"id":"7c005321-6523-4298-b810-4645b3bb2623"},"content":[{"type":"paragraph","attrs":{"id":"3fac5284-ada7-4f08-82d9-ca799d28457e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"token"},{"type":"text","text":":在控制台获取的HTTPS Token。"}]}]},{"type":"listItem","attrs":{"id":"3ab621f9-b539-4030-b774-8ea348c630a8"},"content":[{"type":"paragraph","attrs":{"id":"33c77f92-c6a4-4d41-bf11-c6351dbe350e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"ttl"},{"type":"text","text":":建议设置为1,表示返回结果中携带TTL信息。"}]}]}]},{"type":"paragraph","attrs":{"id":"219fb090-51a3-4f66-b939-4f18a58e8c0e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"请求示例(使用curl命令):"}]},{"type":"codeBlock","attrs":{"id":"b4eea09a-8cda-415e-9c8f-7c48217c20cc","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"curl "https://119.29.29.99/d?dn=www.tencent.com&token=YOUR_HTTPS_TOKEN&ttl=1""}]},{"type":"paragraph","attrs":{"id":"2d0ab6cb-9548-44b3-a2ab-09c8418c8c8c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"响应结果为一个IP地址或IP地址列表(多个IP之间以分号分隔),例如:"},{"type":"text","marks":[{"type":"code"}],"text":"123.123.123.123;124.124.124.124"},{"type":"text","text":"。"}]},{"type":"heading","attrs":{"id":"beca9af5-674c-47bd-a217-90c9684d47cd","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"4.2 DES/AES加密方式(单个查询)"}]},{"type":"paragraph","attrs":{"id":"14e8fd2d-a7e6-40a8-b982-28102d7f47e5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"DES加密方式的解析速度最快,但安全性相对较低;AES加密方式在安全性与速度之间取得了较好的平衡。请求格式如下:"}]},{"type":"codeBlock","attrs":{"id":"ed25e010-91a2-4d20-a004-6f4dcea5ebc8","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"http://119.29.29.98/d?dn=[域名加密后的字符串]&id=[授权ID]&ttl=1"}]},{"type":"paragraph","attrs":{"id":"b4d3c1a5-928b-4e0d-9ed3-8b434bda5449","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"参数说明:"}]},{"type":"bulletList","attrs":{"id":"48773714-baa7-4274-baf8-94b74d2e5dee","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"9bdf57f1-99af-4bd3-9690-2e32c06bf279"},"content":[{"type":"paragraph","attrs":{"id":"c7f32b5c-feb0-4548-bcde-10677279eb3b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"dn"},{"type":"text","text":":域名经过DES或AES加密后的字符串(需要先使用对应的密钥对域名进行加密)。"}]}]},{"type":"listItem","attrs":{"id":"ac237f2a-203d-43ca-81ac-ad8a3e2f831d"},"content":[{"type":"paragraph","attrs":{"id":"0a481cb5-13b2-4241-ac33-618dd1edc3ff","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"id"},{"type":"text","text":":在控制台获取的授权ID。"}]}]},{"type":"listItem","attrs":{"id":"4ed57bce-16f3-4984-ad4f-578513595b01"},"content":[{"type":"paragraph","attrs":{"id":"386be2a9-29c5-47bc-ac3f-53518d458543","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"code"}],"text":"ttl"},{"type":"text","text":":建议设置为1。"}]}]}]},{"type":"paragraph","attrs":{"id":"150ece81-5db3-408b-bd32-a0662f1f7923","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要注意的是,使用DES或AES加密方式时,需要在客户端实现相应的加密逻辑(将域名使用密钥加密后作为dn参数的值)。"}]},{"type":"heading","attrs":{"id":"4aa9bcc8-3021-4d20-9b17-ed87382c2cd0","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"4.3 批量查询"}]},{"type":"paragraph","attrs":{"id":"c243751f-093c-457a-afcf-38dbd3e5a44e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"移动解析HTTPDNS还支持批量查询多个域名,一次性可输入多个域名数据进行查询。域名之间使用英文逗号分隔,查询结果以换行符分隔。"}]},{"type":"paragraph","attrs":{"id":"615f74d9-522c-45a9-94ff-6c49ff3ea969","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"HTTPS加密方式的批量查询请求示例:"}]},{"type":"codeBlock","attrs":{"id":"a59d2dbd-b6fe-4249-91ff-b6a2676ed178","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"https://119.29.29.99/d?dn=cloud.tencent.com,www.qq.com,www.dnspod.cn&token=YOUR_HTTPS_TOKEN&ttl=1"}]},{"type":"paragraph","attrs":{"id":"890cbc0a-aed6-4447-aa44-4761a87fd1a9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"批量查询的限制说明:同时支持的最大域名个数为8个,返回值不超过8 * 1024字节。此外,批量查询功能不支持原移动解析HTTPDNS服务地址119.29.29.29。"}]},{"type":"heading","attrs":{"id":"1be727ca-88e0-4ba7-93b2-b90ada553115","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"5. 接入方式二:SDK集成(推荐)"}]},{"type":"paragraph","attrs":{"id":"b038617e-e8ec-45ad-a3d7-60fe47fb992a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"对于绝大多数移动端App来说,使用腾讯云提供的原生SDK进行集成是更加推荐的方式。SDK封装了HTTPDNS的核心逻辑,提供了缓存管理、容灾切换、日志上报等高级功能,接入成本低且功能完善。腾讯云HTTPDNS SDK已经广泛应用于腾讯各类游戏客户端,功能成熟稳定。"}]},{"type":"paragraph","attrs":{"id":"f9e0780f-ef40-4821-bf19-ff9dc0c8be89","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"以下分别介绍Android、iOS和HarmonyOS三大平台的SDK接入方法。"}]},{"type":"heading","attrs":{"id":"b8a8af94-6d97-45d9-90c6-2da1dd3b359a","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.1 Android SDK接入"}]},{"type":"heading","attrs":{"id":"4fe3a1e3-09f6-4c8e-8f27-a004c236ac91","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.1.1 添加依赖"}]},{"type":"paragraph","attrs":{"id":"4d5b3d9d-38f6-4287-bd1f-6acdfb5e9a69","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在项目的build.gradle文件中添加HTTPDNS SDK的依赖(具体版本号请参考官方最新发布):"}]},{"type":"codeBlock","attrs":{"id":"3d255223-feec-4148-9da5-3caad4ea38d4","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"dependencies {nimplementation 'com.tencent:httpdns:最新版本号'n}"}]},{"type":"heading","attrs":{"id":"699c1e69-f76c-4a98-9ebc-21b731067ab9","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.1.2 SDK初始化"}]},{"type":"paragraph","attrs":{"id":"07dfc2f1-b546-46fc-a433-8ce83b16d0a4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在Application的onCreate方法中进行SDK初始化:"}]},{"type":"codeBlock","attrs":{"id":"05de7777-5a4b-449f-b0f3-b430e4955849","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"import com.tencent.msdk.dns.MSDKDnsResolver;nimport com.tencent.msdk.dns.DnsConfig;nimport com.tencent.msdk.dns.EncryptType;nnpublic class MyApplication extends Application {n@Overridenpublic void onCreate() {nsuper.onCreate();nnDnsConfig dnsConfig = new DnsConfig.Builder()n.setContext(this)n.setDnsId("您的授权ID")n.setDnsKey("您的DES加密密钥")n.setEncryptType(EncryptType.DES) // 可选DES、AES、HTTPSn.setDebug(true) // 开发阶段建议开启调试日志n.build();nnMSDKDnsResolver.getInstance().init(dnsConfig);nn// 可选:预解析常用域名,提升首次访问速度n// MSDKDnsResolver.getInstance().setPreResolvedDomains(Arrays.asList("www.qq.com", "www.tencent.com"));n}n}"}]},{"type":"heading","attrs":{"id":"bc511d30-9209-450e-9399-6bf2b1584ed2","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.1.3 发起域名解析"}]},{"type":"paragraph","attrs":{"id":"1ea869c5-bd08-4281-8223-a562bc7979b7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在需要发起网络请求的地方,调用SDK的解析方法获取IP地址:"}]},{"type":"codeBlock","attrs":{"id":"eb0308a9-de3c-4b20-bbc7-954d95c8610b","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"import com.tencent.msdk.dns.MSDKDnsResolver;nn// 同步解析域名,返回IP地址字符串,多个IP以分号分隔nString ips = MSDKDnsResolver.getInstance().getAddrByName("www.tencent.com");nn// 将解析结果转换为InetAddress列表,用于后续的网络请求nif (ips != null && !ips.isEmpty()) {nString[] ipArr = ips.split(";");nList inetAddressList = new ArrayList<>();nfor (String ip : ipArr) {nif ("0".equals(ip)) {ncontinue;n}ntry {nInetAddress inetAddress = InetAddress.getByName(ip);ninetAddressList.add(inetAddress);n} catch (UnknownHostException ignored) {n// 忽略异常的IPn}n}n// 使用inetAddressList发起网络请求n}"}]},{"type":"heading","attrs":{"id":"88b64f87-28a5-4ee6-a216-078a87e6f27c","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.1.4 与COS SDK集成示例"}]},{"type":"paragraph","attrs":{"id":"be7d5fac-6d44-486e-8a47-30253b3dce90","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果您同时使用了腾讯云COS(对象存储)SDK,可以通过COS SDK的addCustomerDNSFetch方法接入HTTPDNS解析结果:"}]},{"type":"codeBlock","attrs":{"id":"55831e6b-eff6-46ba-bc5a-b5a8ff738579","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"// 获取CosXmlService实例nCosXmlService cosXmlService = ...;nn// 接入HTTPDNSncosXmlService.addCustomerDNSFetch(hostname -> {nString ips = MSDKDnsResolver.getInstance().getAddrByName(hostname);nString[] ipArr = ips.split(";");nif (ipArr.length == 0) {nreturn Collections.emptyList();n}nList inetAddressList = new ArrayList<>(ipArr.length);nfor (String ip : ipArr) {nif ("0".equals(ip)) {ncontinue;n}ntry {nInetAddress inetAddress = InetAddress.getByName(ip);ninetAddressList.add(inetAddress);n} catch (UnknownHostException ignored) {n}n}nreturn inetAddressList;n});"}]},{"type":"heading","attrs":{"id":"e88668e5-b75d-4cc2-bb1f-548768eab958","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.2 iOS SDK接入"}]},{"type":"heading","attrs":{"id":"6b19191d-908e-4a30-8eff-3c9d38d6df0e","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.2.1 通过CocoaPods集成"}]},{"type":"paragraph","attrs":{"id":"a0d36b8a-ce60-4a40-bf79-79f3ba2386cd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"首先在项目的Podfile文件中添加HTTPDNS库依赖:"}]},{"type":"codeBlock","attrs":{"id":"4a61ddcb-640c-4655-bd4b-96e5cb4af7bf","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"# 适用于GNU 98配置的工程npod 'MSDKDns'nn# 或者适用于GNU 11和libc 配置的工程n# pod 'MSDKDns_C11'"}]},{"type":"paragraph","attrs":{"id":"724aaaf6-089f-495d-8567-15097e5d8284","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"然后执行pod install命令安装依赖:"}]},{"type":"codeBlock","attrs":{"id":"f3836fe5-4ddf-4c05-8392-b8caed14f1ab","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"pod install"}]},{"type":"heading","attrs":{"id":"fcbf0007-1900-4145-a72d-5c60257fd213","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.2.2 手动集成"}]},{"type":"paragraph","attrs":{"id":"bf3034f9-f4ad-40f1-9cb3-3a2beff80efc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果不使用CocoaPods,也可以手动集成:将HTTPDNS SDK中的framework文件拖入Xcode项目目标中,并引入以下系统库:"}]},{"type":"bulletList","attrs":{"id":"35cdecd5-b17e-4961-b39d-f25cf45ae776","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"f5dad864-4212-4538-ad19-970d6e8ba565"},"content":[{"type":"paragraph","attrs":{"id":"3fe9d71c-555a-4578-880e-f9126ddb8ffd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"libz.tbd"}]}]},{"type":"listItem","attrs":{"id":"3e47f1f6-9546-448a-883d-0e9921a071c1"},"content":[{"type":"paragraph","attrs":{"id":"f097adeb-82b2-4978-8082-6f70cd4a07e8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"libsqlite3.tbd"}]}]},{"type":"listItem","attrs":{"id":"87f3ad9e-4ba4-42b4-a66a-034845e123aa"},"content":[{"type":"paragraph","attrs":{"id":"60b0323e-5b84-4883-b851-8ba062263ae3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"libc .tbd"}]}]},{"type":"listItem","attrs":{"id":"dbdfd092-fe21-4608-b4b6-db1df4dd2abd"},"content":[{"type":"paragraph","attrs":{"id":"013fa5a7-c84c-4d5c-9ef8-7b16e023e9ef","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Foundation.framework"}]}]},{"type":"listItem","attrs":{"id":"ecc004ce-053d-4167-a4c8-3307e8ce6a9d"},"content":[{"type":"paragraph","attrs":{"id":"790c355b-a1d8-43d5-8fd6-788af680c252","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"CoreTelephony.framework"}]}]},{"type":"listItem","attrs":{"id":"7cdbd496-398c-4753-a213-f11e777dbbd6"},"content":[{"type":"paragraph","attrs":{"id":"17e353aa-620e-4584-af8e-55d6d4e866b6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"SystemConfiguration.framework"}]}]},{"type":"listItem","attrs":{"id":"c05420a0-5f59-476f-bcf0-825401159c1c"},"content":[{"type":"paragraph","attrs":{"id":"8eddc1fc-d52a-45ca-a8c2-e4bcd3bd3215","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"CoreGraphics.framework"}]}]},{"type":"listItem","attrs":{"id":"e9f6926e-9582-4055-937d-0010913dda8b"},"content":[{"type":"paragraph","attrs":{"id":"3cdbd9b6-3a7b-4b9e-a3ce-3c2d54842f00","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Security.framework"}]}]}]},{"type":"paragraph","attrs":{"id":"1882c163-1b4b-48c1-b615-295ce7b43a05","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"此外,还需要在Other Linker Flags中添加-ObjC配置。"}]},{"type":"heading","attrs":{"id":"acecf291-5000-4091-b375-4d3de877f3d4","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.2.3 SDK初始化与使用"}]},{"type":"paragraph","attrs":{"id":"78051f34-06ec-4c71-abd0-f391d49a3207","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"导入头文件并初始化SDK:"}]},{"type":"codeBlock","attrs":{"id":"fc49d0be-0dda-4563-afb4-2e95a42e3387","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"#import nn// 在App启动时初始化n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {n// 初始化HTTPDNSnMSDKDnsResolver *dnsResolver = [MSDKDnsResolver sharedInstance];nDnsConfig *config = [[DnsConfig alloc] init];nconfig.dnsId = @"您的授权ID";nconfig.dnsKey = @"您的DES加密密钥";nconfig.encryptType = EncryptTypeDES; // 可选DES、AES、HTTPSnconfig.debug = YES; // 开发阶段开启调试日志n[dnsResolver initConfig:config];nn// 可选:预解析域名n// [dnsResolver setPreResolvedDomains:@[@"www.qq.com", @"www.tencent.com"]];nnreturn YES;n}nn// 在需要解析域名的地方调用n- (void)resolveDomain:(NSString *)domain {nNSString *ips = [[MSDKDnsResolver sharedInstance] getAddrByName:domain];n// ips为分号分隔的IP地址列表,如 "123.123.123.123;124.124.124.124"n// 解析结果可用于后续的网络请求n}"}]},{"type":"paragraph","attrs":{"id":"f6b819bf-0e1a-46d5-924b-d50bb53b1ea5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要注意的是,iOS端集成SDK时,如果HTTPDNS未查询到解析结果,会返回LocalDNS的解析结果作为降级方案。为验证接入是否成功,可以开启SDK调试日志进行验证。"}]},{"type":"heading","attrs":{"id":"1368060e-6081-459a-8ae9-75007a025e69","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.3 HarmonyOS SDK接入"}]},{"type":"paragraph","attrs":{"id":"2ec2f3d1-31ad-425d-9393-e0672d68c30d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"随着鸿蒙生态的快速发展,腾讯云HTTPDNS也提供了对HarmonyOS平台的原生支持。"}]},{"type":"heading","attrs":{"id":"10d340f4-1ec2-4fa4-94d2-60a5a1eff2f1","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.3.1 安装SDK"}]},{"type":"paragraph","attrs":{"id":"213a4b8a-431a-40a0-ab3f-a06aeb50e289","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在HarmonyOS应用根目录执行以下命令安装SDK:"}]},{"type":"codeBlock","attrs":{"id":"1978fdb3-9f39-4a9a-b0b1-73eef9f2561e","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"ohpm install @tencentcloud/httpdns"}]},{"type":"heading","attrs":{"id":"cd462988-1cdc-43c5-b9ac-8d4959c2b503","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.3.2 SDK初始化"}]},{"type":"paragraph","attrs":{"id":"634ad0c4-fda7-4504-9ed3-75d75c9b28b9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在Ability的onCreate生命周期回调中执行SDK初始化:"}]},{"type":"codeBlock","attrs":{"id":"beb5da6d-f178-4cb3-b68a-48249b49df44","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';nimport { window } from '@kit.ArkUI';nimport { httpdns, EncryptType } from "@tencentcloud/httpdns";nnconst DNS_ID = '您的授权ID';nconst DES_KEY = '您的DES加密密钥';nnexport default class EntryAbility extends UIAbility {nonCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {nhttpdns.getInstance().initConfig({ncontext: this.context,ndnsId: DNS_ID,ndnsKey: DES_KEY,nencryptType: EncryptType.DES,ndebug: true,n});nn// 可选:预解析域名n// httpdns.getInstance().setPreResolvedDomains(['www.qq.com']);n}n}"}]},{"type":"heading","attrs":{"id":"6ea3dffb-2de6-403c-9207-4d25d5a01af6","textAlign":"inherit","indent":0,"level":4,"isHoverDragHandle":false},"content":[{"type":"text","text":"5.3.3 使用HTTPDNS解析结果发起网络请求"}]},{"type":"paragraph","attrs":{"id":"226c6ad9-84b0-4889-b2ec-ceb1819f8d79","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在发起网络请求之前,先调用SDK的域名解析API获取IP地址,然后通过系统API设置自定义DNS规则:"}]},{"type":"codeBlock","attrs":{"id":"11f6bec7-591c-4359-8c9b-937aec1f822e","language":"javascript","theme":"atom-one-dark","runtimes":0,"isHoverDragHandle":false,"key":"","languageByAi":"javascript"},"content":[{"type":"text","text":"import { httpdns } from "@tencentcloud/httpdns";nimport { http } from '@kit.NetworkKit';nimport connection from '@ohos.net.connection';nimport { BusinessError } from '@kit.BasicServicesKit';nimport Url from '@ohos.url';nnasync function connectionWithHttpDns(url: string, options: http.HttpRequestOptions) {nlet urlObject = Url.URL.parseURL(url);nconst host = urlObject.hostname;nn// HTTPDNS解析获取域名nlet result = await httpdns.getInstance().getHostByName(host);nn// 通过系统API设置DNS规则ntry {nawait connection.removeCustomDnsRule(host);n} catch (ignored) {}nnresult = result.filter((item) => item !== '0');nif (result?.length > 0) {nawait connection.addCustomDnsRule(host, result);n} else {nconsole.log(`httpdns解析没有结果,不设置dns`);n}nn// 发起网络请求n// ...n}"}]},{"type":"heading","attrs":{"id":"545a1af1-99c7-42fa-907b-7f8872c84041","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"6. 最佳实践:打造高可用的HTTPDNS接入方案"}]},{"type":"paragraph","attrs":{"id":"eb3f9b73-f756-4323-9174-5474ccfae6c0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"仅仅完成SDK的集成是不够的,一个健壮的HTTPDNS接入方案还需要考虑容灾、缓存、超时、网络切换等多个维度。以下是腾讯云官方推荐的最佳实践策略。"}]},{"type":"heading","attrs":{"id":"6cddde56-d5f7-4a56-81e2-8dc6412ecf09","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"6.1 Failed Over容灾策略"}]},{"type":"paragraph","attrs":{"id":"3bae4735-ab21-4a88-a9c7-690915396da7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"虽然腾讯云HTTPDNS服务已接入BGP Anycast并实现了多地跨机房容灾,但为了确保在最坏情况下(如移动网络不稳定或HTTPDNS服务出现意外问题)客户端的域名解析依然不受影响,必须保留LocalDNS作为最终的容灾通道。"}]},{"type":"paragraph","attrs":{"id":"bff989a7-ef8d-4fa6-8488-d63786c69f5f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"推荐的容灾策略如下:"}]},{"type":"orderedList","attrs":{"id":"a66b3270-702e-4b09-903a-766e15126540","start":1,"isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"1da7a704-1603-4911-b740-07e81781dcc4"},"content":[{"type":"paragraph","attrs":{"id":"c0245a58-a594-4485-837c-f16e0fb2fc01","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"首先向HTTPDNS发起域名查询请求。"}]}]},{"type":"listItem","attrs":{"id":"306f556d-6e27-494c-905f-288194d290e8"},"content":[{"type":"paragraph","attrs":{"id":"c2903e0e-8c34-43ab-9189-8cd858af490b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果HTTPDNS查询返回的结果不是一个有效的IP地址(包括结果为空、结果非IP格式、连接超时等情况),则立即降级使用本地LocalDNS进行域名解析。"}]}]},{"type":"listItem","attrs":{"id":"3da5d6d3-a6e5-407c-8162-ba7659d743a3"},"content":[{"type":"paragraph","attrs":{"id":"636facdc-8eac-471e-87fe-72f5a22cc029","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"HTTPDNS请求的超时时间建议设置为5秒。首次请求的超时时间可以更短一些(如500毫秒),后续请求可适当放宽至2到5秒。"}]}]}]},{"type":"heading","attrs":{"id":"f95b5df4-d6a0-48b2-91e3-39fb3ffe0e34","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"6.2 缓存策略"}]},{"type":"paragraph","attrs":{"id":"d5a1499e-1006-4ebf-a9cf-40988f732cdf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"移动互联网用户的网络环境复杂多变,为了尽可能减少由于域名解析导致的延迟,强烈建议在客户端本地进行DNS解析结果的缓存。缓存策略应遵循以下原则:"}]},{"type":"bulletList","attrs":{"id":"04a59914-04f2-443b-a123-f1eac51caa6c","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"b49b073b-8e86-4db3-a1e4-57edd95d87e5"},"content":[{"type":"paragraph","attrs":{"id":"dfbd4b2d-4c4e-4394-a6f0-02d356198ae7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"缓存时间"},{"type":"text","text":":建议设置为120秒至600秒之间,不可低于60秒。过短的缓存时间会导致频繁的HTTPDNS请求,增加网络开销和延迟;过长的缓存时间则可能导致解析结果不够实时。"}]}]},{"type":"listItem","attrs":{"id":"9f8d642d-8e30-4642-9e71-f4a8f338aae5"},"content":[{"type":"paragraph","attrs":{"id":"cf26b003-cd1e-4a8d-bb9f-0c7af413261b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"缓存更新时机一:网络状态变化"},{"type":"text","text":"。当用户的网络状态发生变化时(如从5G/4G切换到Wi-Fi,或从Wi-Fi切换到5G/4G),其接入点的网络归属可能发生变化。此时需要重新向HTTPDNS发起域名解析请求,以获得用户当前网络归属下的最优指向。"}]}]},{"type":"listItem","attrs":{"id":"075a0d40-dc62-4b88-b084-5097f1ebecb6"},"content":[{"type":"paragraph","attrs":{"id":"06b7a0da-ebd4-4653-8e98-a8df92eae9ae","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"缓存更新时机二:缓存过期"},{"type":"text","text":"。当域名解析结果的缓存时间到期时,客户端应向HTTPDNS重新发起解析请求。为了减少用户在缓存过期后重新解析时的等待时间,建议在TTL的75%时就开始进行预解析。例如,本地缓存的TTL为600秒,那么在第450秒时,客户端就应该异步发起新的解析请求,这样当缓存真正过期时,新的解析结果已经准备就绪。"}]}]}]},{"type":"heading","attrs":{"id":"56b1a95c-693f-45d0-933d-099957f7e101","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"6.3 减少域名数量的建议"}]},{"type":"paragraph","attrs":{"id":"d5fc89f2-61d5-4aa1-8546-4fd4ea0028d2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"除了上述策略外,减少域名解析的次数也能有效减少网络交互,提升用户访问体验。建议在业务允许的情况下,尽量减少域名的数量。如需区分不同的资源,建议通过URL路径或参数来区分,而非使用不同的域名。因为每多一个域名,即使该域名已经命中本地缓存,也会至少增加100毫秒的访问延迟。"}]},{"type":"heading","attrs":{"id":"c76e0e39-6fcd-4d7a-9457-c18a010910bc","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"6.4 加密方式的选择"}]},{"type":"paragraph","attrs":{"id":"7d06d16f-4e86-473d-8731-44261c319a30","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"腾讯云HTTPDNS提供了三种加密方式:"}]},{"type":"bulletList","attrs":{"id":"968d9d6f-b1dd-4f80-a742-15716e6e51d4","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"f93e54cd-9903-45ab-8b29-e0059caea8a1"},"content":[{"type":"paragraph","attrs":{"id":"52ec92b5-0a0b-40c1-8f07-969cbc8b05e5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"DES加密"},{"type":"text","text":":解析速度最快,适合对解析速度要求极高、对安全性要求相对较低的场景。"}]}]},{"type":"listItem","attrs":{"id":"3e7813a3-87be-42aa-bf2c-756d00915689"},"content":[{"type":"paragraph","attrs":{"id":"4cd66b20-472d-40ef-aef9-2f36ee68508d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"AES加密"},{"type":"text","text":":安全性与解析速度较为均衡,适合大多数常规业务场景。"}]}]},{"type":"listItem","attrs":{"id":"7ff0de79-ee68-4ed1-abcf-61c81d6ddcf6"},"content":[{"type":"paragraph","attrs":{"id":"f2867940-dbb6-4be6-b7ce-3e4a4c801ecf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"HTTPS加密"},{"type":"text","text":":安全性最高,但解析速度略慢,适合对数据安全有严格要求的金融、支付等场景。"}]}]}]},{"type":"paragraph","attrs":{"id":"210efa28-d082-4c4e-950c-3c874ce5b8ad","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"开发者应根据自身业务的安全需求和性能要求,选择合适的加密方式。"}]},{"type":"heading","attrs":{"id":"fec2b564-a498-43fa-ba73-7643df431e58","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"7. 解析监控:数据化运营与问题排查"}]},{"type":"paragraph","attrs":{"id":"eed189c8-f703-49f7-a669-36568c924f7a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"接入HTTPDNS后,如何评估接入效果、发现潜在问题?腾讯云移动解析HTTPDNS提供了强大的解析监控功能,帮助开发者实时掌握域名解析质量。"}]},{"type":"heading","attrs":{"id":"916f446b-de55-460c-a20c-ca6b02511613","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"7.1 开启解析监控"}]},{"type":"paragraph","attrs":{"id":"e22cd5d3-8900-42b4-a4e6-7801905b0a89","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"启用解析监控前,请确保已使用Android SDK V4.4.0、iOS SDK 1.7.0或更高版本接入。然后在HTTPDNS控制台的解析监控页面,单击解析监控开关,开启解析日志上报。HTTPDNS后台系统将会分析上报的数据,并将相关数据以图表形式呈现出来。"}]},{"type":"heading","attrs":{"id":"ce16e97f-bdd3-4276-943e-93f974dc638c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"7.2 核心监控指标"}]},{"type":"paragraph","attrs":{"id":"90655fc4-f201-426f-94c2-6026ca70150a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"解析监控页面提供了以下核心指标:"}]},{"type":"bulletList","attrs":{"id":"c81d2973-4273-4f2f-ae36-c276af28b7ae","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"723dfbb7-0dcd-4fef-a357-3ae1ab6cbb7d"},"content":[{"type":"paragraph","attrs":{"id":"9f9d674c-e5a4-4a97-9788-36a2bcc4d840","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"SDK解析量"},{"type":"text","text":":SDK所收到的所有域名解析请求总量。"}]}]},{"type":"listItem","attrs":{"id":"66f046a1-ae42-427f-b38d-a9df20dee0d7"},"content":[{"type":"paragraph","attrs":{"id":"43c92125-d297-4410-8457-ecbfa162656d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"减少劫持量"},{"type":"text","text":":统计HTTPDNS请求正常返回(err_code = 0),且解析结果与LocalDNS完全不一致的数量。这个指标直接反映了HTTPDNS帮助应用规避了多少次域名劫持。"}]}]},{"type":"listItem","attrs":{"id":"66f259cd-8615-4986-a7a4-bbb9893fd4dd"},"content":[{"type":"paragraph","attrs":{"id":"a20952e9-8f80-4a52-ae01-b2aa3ffd85f4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"SDK缓存率"},{"type":"text","text":":命中缓存解析量占总解析量的比例。缓存率越高,说明越多的解析请求无需发起网络请求,解析速度越快。"}]}]},{"type":"listItem","attrs":{"id":"abd90911-6501-4e4e-83f9-8239e5ce8591"},"content":[{"type":"paragraph","attrs":{"id":"25bc2129-89be-4928-89e3-3fd7d399f304","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"解析速率提升"},{"type":"text","text":":基于缓存率计算出的解析速度提升比例。"}]}]},{"type":"listItem","attrs":{"id":"81cba7fb-d0b1-4dab-8f2e-4cd4c55c3757"},"content":[{"type":"paragraph","attrs":{"id":"2af420ed-dc5f-45af-9c5e-769f0b7885cd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"地区视图"},{"type":"text","text":":按国家、省份及地区维度展示HTTPDNS的解析量、解析成功率、平均解析时延。"}]}]},{"type":"listItem","attrs":{"id":"347f129e-65f1-482b-ad38-a94aa04bfd14"},"content":[{"type":"paragraph","attrs":{"id":"41fc7a15-8ebb-451a-9ba7-567f6990c196","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"ISP视图"},{"type":"text","text":":按国内各运营商维度展示HTTPDNS的解析量、解析成功率、平均解析时延。"}]}]},{"type":"listItem","attrs":{"id":"cbff38ff-90bd-4081-a95b-dc445b4bc56b"},"content":[{"type":"paragraph","attrs":{"id":"dd1fcdd0-a877-4923-aec4-a0ed0647aeca","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"被劫持TOP10域名"},{"type":"text","text":":HTTPDNS解析结果与LocalDNS解析结果完全不一致的TOP10域名及其解析量。"}]}]},{"type":"listItem","attrs":{"id":"ad64a778-d24c-4387-93fa-b8ade506c6d6"},"content":[{"type":"paragraph","attrs":{"id":"723a0100-f96a-430d-bfef-daf4f0344e8f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"bold"}],"text":"TOP10异常域名监控"},{"type":"text","text":":HTTPDNS API返回异常的TOP10域名。"}]}]}]},{"type":"paragraph","attrs":{"id":"0588edf0-cd8e-43ff-9086-94b4bb2bb5cc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要注意的是,解析监控页面的解析量不作为实际计费依据,实际的解析量请前往域名管理页面查看或下载。目前解析监控功能正处于公测阶段。"}]},{"type":"heading","attrs":{"id":"69d55e7a-16e7-4731-aecf-b03e7bf80d74","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","text":"8. 常见问题解答"}]},{"type":"heading","attrs":{"id":"d9cdf5cf-702b-4c2e-9e9a-7fb235bd348a","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题1:HTTPDNS和传统DNS可以同时使用吗?"}]},{"type":"paragraph","attrs":{"id":"67a4db4d-1863-4ad4-9499-0acf9eb26404","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"可以。最佳实践建议将HTTPDNS作为首选解析通道,同时保留LocalDNS作为容灾备份。当HTTPDNS查询失败或返回无效结果时,自动降级到LocalDNS进行解析,确保域名解析的高可用性。"}]},{"type":"heading","attrs":{"id":"612b1731-7f80-40c2-bb33-2e3b84217821","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题2:HTTPDNS的缓存时间应该设置为多长?"}]},{"type":"paragraph","attrs":{"id":"3d6a9be8-4ad1-4b0e-9af6-73675c43d94b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"建议设置为120秒至600秒之间,且不可低于60秒。过短的缓存时间会导致频繁的HTTPDNS请求,增加延迟和网络开销;过长的缓存时间则可能导致解析结果不够实时。同时建议在TTL的75%时触发预解析,避免用户感知到缓存过期带来的延迟。"}]},{"type":"heading","attrs":{"id":"a5fb24ed-9bf2-4085-b5f8-b306349cf2ba","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题3:接入HTTPDNS后,如何验证是否接入成功?"}]},{"type":"paragraph","attrs":{"id":"15c9da64-713e-447c-bf03-ec76896b9336","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"可以通过开启SDK的调试日志来验证。在SDK初始化时将debug参数设置为true(Android)或YES(iOS),然后在日志中查找HTTPDNS的解析请求和响应日志。如果看到解析请求成功返回了IP地址,则说明接入成功。此外,也可以在HTTPDNS控制台的解析监控页面查看是否有解析数据上报。"}]},{"type":"heading","attrs":{"id":"d65e18b3-6d7e-4ed7-bb96-9155b1568191","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题4:HTTPDNS支持哪些平台?"}]},{"type":"paragraph","attrs":{"id":"9bfe21aa-2fd2-454a-a0ba-a838810b0e1a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"腾讯云移动解析HTTPDNS目前支持Android、iOS、HarmonyOS三大移动平台,提供了原生的SDK接入方案。同时也提供了通用的HTTP API接口,可供服务端或其他平台调用。"}]},{"type":"heading","attrs":{"id":"943445ee-8d21-46fb-b63a-a97b51d66e4b","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题5:HTTPDNS的计费方式是怎样的?"}]},{"type":"paragraph","attrs":{"id":"41917730-6eda-47b1-a1cf-b5a7368a8c89","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"HTTPDNS提供一定的免费额度,超过免费额度后会产生相应的费用。具体计费标准请参考腾讯云官方计费说明。解析监控功能目前处于公测阶段,公测结束后将正常计费。"}]},{"type":"heading","attrs":{"id":"03f35afd-c612-4b7f-b9c9-308b2c620b8f","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题6:网络切换后需要重新解析域名吗?"}]},{"type":"paragraph","attrs":{"id":"547bc583-a318-4145-8d61-0f3d3e4c9129","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"需要。当用户的网络状态发生变化时(如从5G/4G切换到Wi-Fi,或从一个Wi-Fi切换到另一个Wi-Fi),其接入点的网络归属可能发生变化。此时需要重新向HTTPDNS发起域名解析请求,以获得用户当前网络归属下的最优指向。"}]}]}","createTime":1783403650,"ext":{"closeTextLink":0,"comment_ban":0,"description":"","focusRead":0},"favNum":0,"html":"","isOriginal":0,"likeNum":0,
喜欢(0)

上一篇

OpenClaw部署全流程:TopClaw本地安装配置一步到位

OpenClaw部署全流程:TopClaw本地安装配置一步到位

下一篇

三十分钟从需求到运行:AI低代码开发在汽车研发与生产场景的应用实践

三十分钟从需求到运行:AI低代码开发在汽车研发与生产场景的应用实践
猜你喜欢