简介

使用Python re 提取百度百科的内容:实现了在命令行输入要查询的百科内容的词语后,命令行里打印出查到的内容的功能。内容由正则表达式提取出百度百科的网页内容。
库依赖:urllib3、json、certifi、io、sys、re、platform

源码

源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# -*- coding: UTF-8 -*-

__author__ = 'Mr.Bluyee'

import urllib3
import json
import certifi
import io
import sys
import re
import platform

os_info = platform.platform()

if os_info[0] == 'W':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
#改变标准输出的默认编码

class BaiduPedia(object):
def __init__(self):
self.html_data = ''
self.title = ''
self.other_pedias_list = []

def make_https_request(self,url,func,field = {}):
https = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs=certifi.where())
request_head = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;'}
r = https.request(func, url,fields = field,headers = request_head)
if r.status == 200:
self.html_data = r.data.decode('utf-8')

def baidu_pedia_request(self,word):
url = 'https://baike.baidu.com/search/word'
func = 'GET'
field = {'word':word}
self.make_https_request(url,func,field)

def save_file(self,web_data,filename):
with open(filename,'w') as f:
f.write(web_data)

def baidupedia_get_title(self,s):
pattern = re.compile(r'<title>.*?</title>', re.S)
self.title = pattern.search(s).group()[7:-13]

def baidupedia_get_other_pedias_dict(self,s):
pattern = re.compile(r'<li class="item">▪<a title=.*?</a></li>', re.S)
other_pedias = pattern.findall(s)
if len(other_pedias) > 0:
print('')
print('该词是一个多义词,请在下列义项上选择浏览:')
print('1' + self.title)
num_index = 2
for item in other_pedias:
index1 = item.find('href')
index2 = item.find('>',index1)
other_pedias_href = 'https://baike.baidu.com' + item[index1 + 6:index2 - 1]
other_pedias_title = item[index2 + 1:-9]
print(str(num_index) + other_pedias_title)
num_index += 1
self.other_pedias_list.append(other_pedias_href)
print('')

def baidupedia_get_summary(self,s):
print(self.title)
print('')
pattern = re.compile(r'<div class="promotion-declaration">.*?</dl></div>', re.S)
head_content = pattern.search(s).group()
head_content = re.sub(r'<[\u0008-\u007F]*?>','',head_content)
head_content = re.sub(r'\n\n*','\n',head_content)
head_content = re.sub(r'&nbsp;','',head_content)
print(head_content)

def baidupedia_get_content(self,s):
pattern = re.compile(r'<a name="\d.*?" class="lemma-anchor para-title".*?<div class="anchor-list">', re.S)
content = pattern.findall(s)
for item in content:
item_pattern1 = re.compile(r'<span class="title-prefix">.*?</h.*?\d', re.S)
item_content1 = item_pattern1.search(item).group()
item_catalogue = re.sub(r'<.*?n>','',item_content1)
if item_catalogue[-1] == '2':
print('---' + item_catalogue[:-4])
elif item_catalogue[-1] == '3':
print('------' + item_catalogue[:-4])
item_pattern2 = re.compile(r'<div class="para" label-module="para">.*?</div>', re.S)
item_content2 = item_pattern2.findall(item)
for item_child in item_content2:
item_child_content1 = re.sub(r'<[\u0008-\u007F\u4e00-\u9fa5]*?>\r*\n*', '', item_child)
item_child_content1 = re.sub(r'&.*?;','',item_child_content1)
if item_catalogue[-1] == '2':
print(' ' + item_child_content1)
elif item_catalogue[-1] == '3':
print(' ' + item_child_content1)
print('')

def baidupedia_match(self,s):
self.baidupedia_get_summary(s)
self.baidupedia_get_content(s)

def baidupedia(self,word):
self.baidu_pedia_request(word)
self.baidupedia_get_title(self.html_data)
self.baidupedia_get_other_pedias_dict(self.html_data)
list_len = len(self.other_pedias_list)
if list_len > 0:
num = int(input('请输入你要查的意思:'))
print('')
if num == 1:
self.baidupedia_match(self.html_data)
else:
self.make_https_request(self.other_pedias_list[num - 2],'GET')
self.baidupedia_get_title(self.html_data)
self.baidupedia_match(self.html_data)
else:
self.baidupedia_match(self.html_data)

def main():
word = input('请输入你要查的词语:')
baidu_pedia = BaiduPedia()
baidu_pedia.baidupedia(word)

if __name__ == '__main__':
main()

示例:

运行后出现提示,输入支持中英文词。

1
请输入你要查的词语:

我们输入DNS

1
2
3
4
5
6
7
8
9
10
11
请输入你要查的词语:DNS

该词是一个多义词,请在下列义项上选择浏览:
1dns(域名系统)
2体育术语
3二硝基水杨酸
4直接数值模拟
5魔方比赛用语
6生物化学实验

请输入你要查的意思:

由于DNS是个多义词,给出了一个选项,输入想要查的词的号,比如我们输入1后回车,表示想要查询域名系统的百科释义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
请输入你要查的意思:1

dns(域名系统)


DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。
中文名
域名系统
外文名
Domain Name System
使用协议
UDP,TCP(当请求大于512字节时)
使用端口
53

---DNS功能
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1]
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

---DNS重要性
1、技术角度看
DNS解析是互联网绝大多数应用的实际寻址方式; 域名技术的再发展、以及基于域名技术的多种应用,丰富了互联网应用和协议。
2、资源角度看
域名是互联网上的身份标识,是不可重复的唯一标识资源; 互联网的全球化使得域名成为标识一国主权的国家战略资源。

---DNS冗余
为保证服务的高可用性,DNS要求使dns

某个区域的资源记录通过手动或自动方式更新到单个主名称服务器(称为主 DNS服务器)上,主 DNS 服务器可以是一个或几个区域的权威名称服务器。
其它冗余名称服务器(称为辅 DNS 服务器)用作同一区域中主服务器的备份服务器,以防主服务器无法访问或宕机。辅 DNS服务器定期与主 DNS 服务器通讯,确保它的区域信息保持最新。如果不是最新信息,辅 DNS服务器就会从主服务器获取最新区域数据文件的副本。这种将区域文件复制到多台名称服务器的过程称为区域复制。

---域名结构
通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区[1]。

---解析器
解析器,或另一台DNS服务器递归代表的情况下,域名解析器,协商使用递归服务,使用查询头位。
解析通常需要遍历多个名称服务器,找到所需要的信息。然而,一些解析器的功能更简单地只用一个名称服务器进行通信。这些简单的解析器依赖于一个递归名称服务器(称为“存根解析器”),为他们寻找信息的执行工作。

---DNS服务器
提供DNS服务的是安装了DNS服务器端软件的计算机。服务器端软件既可以是基于类linux操作系统,也可以是基于Windows操作系统的。装好DNS服务器软件后,您就可以在您指定的位置创建区域文件了,所谓区域文件就是包含了此域中名字到IP地址解析记录的一个文件,如文件的内容可能是这样的:primary name server = dns2(主服务器的主机名是 )
serial = 2913 (序列号=2913、这个序列号的作用是当辅域名服务器来复制这个文件的时候,如果号码增加了就复制)
refresh = 10800 (3 hours) (刷新=10800秒、辅域名服务器每隔3小时查询一个主服务器)
retry = 3600 (1 hour) (重试=3600秒、当辅域名服务试图在主服务器上查询更新时,而连接失败了,辅域名服务器每隔1小时访问主域名服务器)
expire = 604800 (7 days) (到期=604800秒、辅域名服务器在向主服务更新失败后,7天后删除中的记录。)
default TTL = 3600 (1 hour) (默认生存时间=3600秒、缓存服务器保存记录的时间是1小时。也就是告诉缓存服务器保存域的解析记录为1小时)

---SDNS
中国互联网络信息中心(CNNIC)研发出我国首个面向下一代互联网的域名服务平台——SDNS。

---DNS查询方法

------查询DNS服务器上的资源记录
在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点dns

常用的资源记录类型
A 地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。
CNAME 标准名称 此记录指定标准主机名的别名。
MX邮件交换器此记录列出了负责接收发到域中的电子邮件的主机。
NS名称服务器此记录指定负责给定区域的名称服务器。

------FQDN名的解析过程查询
若想跟踪一个FQDN名的解析过程,在LinuxShell下输入dig www +trace,返回的结果包括从根域开始的递归或迭代过程,一直到权威域名服务器。
GeniePro DNS 应对DNS劫持和DNS缓存中毒攻击的关键性机制:一致性检查
每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查;
每个Geniepro节点将自身的记录与收到的记录进行比较;
每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查;
每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较。

------一致性仲裁
如果一致性检查发现记录不一致情况,则根据策略(少数服从多数、一票否决等)决定是否接受记录的变化 根据结果,各Geniepro节点将自身记录进行统一 通信协调节点选举 选举出的通信协调节点在任期内具有更新组内节点的权限 选举过程满足不可预测性和不可重复性DNS资源记录 如前所述,每个 DNS 数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如 IP 地址、主机的所有者或者提供服务的类型。

---故障解决
当DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,就无法通过域名访问相应的站点了,这就是DNS解析故障。出现DNS解析故障最大的症状就是访问站点对应的IP地址没有问题,然而访问他的域名就会出现错误。
(1)用nslookup(网路查询)来判断是否真的是DNS解析故障:
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
第一步:确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始-运行-输入CMD”后回车进入命令行模式。
第二步:输入nslookup命令后回车,将进入DNS解析查询界面。
第三步:命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
第四步:接下来输入无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的,会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明本地计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
(2)查询DNS服务器工作是否正常:
这时候要看本地计算机使用的DNS地址是多少了,并且查询他的运行情况。
第一步:通过“开始-运行-输入CMD”后回车进入命令行模式。
第二步:输入ipconfig/all命令来查询网络参数。
第三步:在ipconfig /all显示信息中能够看到一个地方写着DNS SERVERS,这个就是本地的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,可以更换一个其他的DNS服务器地址即可解决问题。
第四步:如果在DNS服务器处显示的是个人公司的内部网络地址,那么说明该公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
(3)清除DNS缓存信息法:
第一步:通过“开始-运行-输入CMD”进入命令行模式。
第二步:在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
第三步:执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
第四步:接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
(4)修改HOSTS(主机)文件法:
第一步:通过“开始-搜索”,然后查找名叫hosts的文件。
第二步:当然对于已经知道他的路径的读者可以直接进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
第三步:双击HOSTS文件,然后选择用“记事本”程序将其打开。
第四步:之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
第五步:将你希望进行DNS解析的条目添加到HOSTS文件中。具体格式是先写该域名对应的IP地址,然后空格接域名信息。
第六步:设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。[2]

---DNS安全问题
1.针对域名系统的恶意攻击:DDOS攻击造成域名解析瘫痪。
2.域名劫持:修改注册信息、劫持解析结果。
3.国家性质的域名系统安全事件:“.ly”域名瘫痪、“.af”域名的域名管理权变更。
4.系统上运行的DNS服务存在漏洞,导致被黑客获取权限,从而篡改DNS信息。
5.DNS设置不当,导致泄漏一些敏感信息。提供给黑客进一步攻击提供有力信息。

---配置DNS
不同的网络设备配置的语法不一样,这里提供的配置方法是以锐捷网络设备为例的,一般也适用思科设备。

---DNS解析
本节描述如何打开DNS域名解析功能开关。
R(config)#ip domain-lookup 打开DNS域名解析功能开关
  配置DNS Server使用no ip domain-lookup命令关闭DNS域名解析的功能:R(config)#no ip domain-lookup
本节描述如何配置DNS服务器。只有配置了DNS服务器,才能进行动态域名解析。
如果要删除DNS服务器,可以使用no ip name-server [ip-address | ipv6-address] 命令。其中参数ip-address和ipv6-address表示删除指定的域名服务器,否则删除所有的域名服务器。
命令
作用
R(config)# ip name-server {ip-address | ipv6-address}
添加DNS Server的IP/IPV6地址。每次执行这条命令,设备都会添加一个DNS Server。当无法从第一个Server获取到域名时,设备会尝试向后续几个Server发送DNS请求,直到正确收到回应为止。系统最多支持6个域名服务器。
  

------静态配置主机名和IP/IPV6地址的映射
如何配置主机名和IP/IPV6地址的映射。本地维护了一张主机名和IP/IPV6地址的对应表,也叫主机名到IP/IPv6地址的映射表。主机名到IP/IPV6地址的映射表内容有两个来源:手工配置和动态学习。在不能动态学习的情况下,手工配置就有必要了。
命令
作用
R(config)# ip host host-name ip-address
手工配置主机名和IP地址映射
R(config)# ipv6 host host-name ipv6-address
手工配置主机名和IPV6地址映射
使用该命令的no形式就可以删除主机名和IP/IPV6地址的映射。
  

------清除动态主机名缓存表
本节描述如何清除动态主机名缓存表。如果输入clear host或clear host * 命令将清除动态缓存表。否则只删除指定域名的表项。
命令
作用
R#clear host [host-name]
清除动态主机名缓存表。
该命令不能删除静态配置的主机名。

------域名解析信息显示
本节描述如何显示DNS的相关配置信息:
命令
作用
R# show hosts [host-name]
查看DNS的相关参数
R# show hosts
Name servers are:
192.168.5.134 static
Host type Address TTL(sec)
www.163.com static 192.168.5.243 ---

---DNS配置举例

------静态域名解析配置举例
拓扑图
如右图静态域名解析配置组网图所示:
静态域名解析配置组网图

应用需求
由于网络设备R-A经常访问域名为destination.com的主机,可利用静态域名解析功能,实现通过destination.com主机名访问IP地址为1.1.1.20的主机,提高域名解析的效率。
配置要点
1. 确保设备和主机间路由可达
2. 主机名和IP地址间的映射正确
配置步骤
手工配置主机名和IP地址间的映射;本例中,配置主机名为destination.com其对应IP地址为1.1.1.20
R-A(config)#ip host destination.com 1.1.1.20
配置验证
第一步,查看域名解析信息;关注点主机、IP地址间的映射关系是否正确。
R-A# show host
Name servers are:
Host type Address TTL(sec)
destination.com static 1.1.1.20 ---
第二步,使用ping destination.com命令,查看执行结果。
R-A# ping destination.com
Translating destination.com...[OK]
Sending 5, 100-byte ICMP Echoes to 1.1.1.20, timeout is 2 seconds:
press Ctrl+C to break
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
从以上显示信息可以看出,R-A通过静态域名解析,成功实现通过destination.com主机名访问IP地址为1.1.1.20的主机。

------动态域名解析配置举例
拓扑图
动态域名解析配置组网图

应用需求
1. DNS域名服务器的IP地址为192.168.31.206/24。
2. 网络设备为DNS客户端,通过动态域名解析功能,实现通过host.com主机名访问IP地址为10.1.1.2的主机。
配置要点
1. DNS客户端和DNS服务器端、访问主机间的路由要可达
2. DNS域名解析开关打开。域名解析功能开关默认开启。
3. 正确配置DNS域名服务器的IP地址
配置步骤
第一步,配置DNS域名服务器
不同域名服务器的配置方法不同,请根据实际情况搭建DNS服务器。具体方法在此不做具体说明。
在DNS服务器上添加主机和IP地址的映射。本例中,设置主机名:host.com;IP地址为10.1.1.2/24
第二步,配置DNS客户端
DNS客户端和DNS服务器端、访问主机间的路由要可达。接口IP配置如拓扑图所示。具体配置过程此处省略。
!打开DNS域名解析功能开关;该功能默认开启
R(config)#ip domain-lookup
!配置域名服务器的IP地址为192.168.31.206
R(config)#ip name-server 192.168.31.206
配置验证
第一步,使用ping host.com命令,查看执行结果。
R# ping host.com
Translating host.com ...[OK]
Sending 5, 100-byte ICMP Echoes to 10.1.1.2, timeout is 2 seconds:
press Ctrl+C to break
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
从以上显示信息可以看出,客户端设备能ping通主机,且对应的目的IP地址为10.1.1.2。设备通过动态域名解析,成功实现通过host.com主机名访问IP地址为10.1.1.2的主机。
第二步,查看域名解析信息;关注点主机名、主机IP地址。
R# show host
Name servers are:
192.168.31.206 static
Host type Address TTL(sec)
host.com dynamic 10.1.1.2 3503
从以上显示信息可以看出,主机名同主机IP地址的映射表项正确。

---全国DNS信息
电信域名系统列表  (按拼音排序, 共32条)
电信
A安徽
202.102.192.68
202.102.199.68
61.132.163.68
202.102.213.68
电信
A澳门
202.175.3.8
202.175.3.3
电信
B北京
202.96.199.133
202.96.0.133
电信
C重庆
61.128.128.68
61.128.192.68
电信
F福建
218.85.157.99
电信
G甘肃
202.100.64.68
61.178.0.93
电信
G广东
202.96.128.86
202.96.128.166
202.96.134.133
202.96.128.68
电信
G广西
202.103.224.68
202.103.225.68
电信
G贵州
202.98.192.67
202.98.198.167
电信
H海南
202.100.192.68
202.100.199.8
电信
H河北
222.222.222.222
电信
H黑龙江
219.147.198.230
219.146.0.130
电信
H河南
219.150.150.150
222.88.88.88
222.85.85.85
电信
H湖北
202.103.0.68
202.103.24.68
202.103.0.117
202.103.44.150
电信
H湖南
222.246.129.80
59.51.78.211
电信
J江苏
61.177.7.1
61.147.37.1
218.2.135.1
221.228.255.1
电信
J江西
202.101.224.68
202.101.226.69
电信
J吉林
219.149.194.55
电信
N宁夏
202.100.96.68
222.75.152.129
电信
Q青海
202.100.128.68
电信
S山东
219.146.0.130
电信
S上海
202.96.209.5
202.96.209.133
电信
S陕西
218.30.19.40
61.134.1.4
电信
S四川
61.139.2.69
202.98.96.68
218.6.200.139
61.139.54.66
电信
T天津
219.150.32.132
电信
X香港
205.252.144.126
218.102.62.71
电信
X新疆
61.128.114.166
61.128.114.133
电信
Y云南
222.172.200.68
61.166.150.123
电信
Z浙江
60.191.244.5
202.96.113.34
联通 DNS 列表 (按拼音排序, 共23条)
联通
A安徽
218.104.78.2
联通
B北京
202.106.0.20
202.106.196.115
联通
G甘肃
221.7.34.10
联通
G广东
221.4.66.66
210.21.4.130
221.4.8.1
联通
G广西
211.97.64.129
221.7.128.68
221.7.136.68
联通
H海南
221.11.132.2
联通
H河北
202.99.160.68
202.99.166.4
联通
H黑龙江
202.97.224.68
202.97.224.69
联通
H河南
202.102.224.68
202.102.227.68
联通
H湖北
218.104.111.122
218.104.111.114
联通
H湖南
58.20.127.170
58.20.57.4
联通
J江苏
221.6.4.66
221.6.96.177
218.104.32.106
联通
J江西
220.248.192.12
220.248.192.13
联通
J吉林
202.98.0.68
202.98.5.68
联通
L辽宁
202.96.69.38
202.96.64.68
联通
N内蒙古
202.99.224.8
202.99.224.67
202.99.224.68
联通
S山东
202.102.152.3
202.102.134.68
联通
S上海
210.22.70.3
210.22.84.3
210.52.207.2
联通
S山西
202.99.192.66
202.99.192.68
联通
S四川
221.10.251.196
联通
T天津
202.99.96.68
202.99.104.68
联通
Y云南
221.3.131.9
221.3.131.10
联通
Z浙江
西宁
221.12.1.228
221.207.58.58
221.12.33.228
221.207.58.68
221.12.65.228
218.108.248.200
211.138.30.66

---港澳台dns地址
208.151.69.65
202.181.202.140
附送大型企业的几个DNS服务器地址
114DNS
在国内使用很差,上网会不稳定

---IPv6公共DNS信息

---热门事件
北京时间2014年1月21日,下午15时20分左右,全国大范围出现DNS故障,中国顶级域名根服务器出现故障,大部分网站受影响,此次故障未对国家顶级域名.CN造成影响,所有运行服务正常。[4]

词条的分级内容由不同长度的短横线表示。