CN110798545A - 一种基于Web的域名数据获取方法 - Google Patents
一种基于Web的域名数据获取方法 Download PDFInfo
- Publication number
- CN110798545A CN110798545A CN201911072822.XA CN201911072822A CN110798545A CN 110798545 A CN110798545 A CN 110798545A CN 201911072822 A CN201911072822 A CN 201911072822A CN 110798545 A CN110798545 A CN 110798545A
- Authority
- CN
- China
- Prior art keywords
- domain name
- address
- page
- ipv4
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于Web的域名数据获取方法。方案是构建由Web服务探测模块、Web页面获取模块、页面解析域名提取模块、域名和IP地址集映射模块组成的域名数据获取系统;Web服务探测模块采用网络扫描工具通过80和443端口扫描IPv4单播地址空间,建立80和443端口开放的IPv4地址列表;Web页面获取模块根据端口号和IPv4地址列表发送网页请求,获取页面信息,建立页面内容数据库;页面解析域名提取模块提取页面内容数据库中每个页面的每个链接,提取出域名,建立域名数据库;域名和IP地址集映射模块向域名服务系统发域名解析请求,获得域名数据库中每个域名和对应IP地址集。本发明可实现全球网站域名高效获取,降低流量开销,提高域名数据获取的广度和效率。
Description
技术领域
本发明涉及计算机网络技术领域,特别涉及一种域名数据获取方法。
背景技术
域名数据是一种特殊的资源,可作为一些互联网企业、安全企业以及国家一些行业部门的重要数据资产,支撑发挥重要的网络服务保障和安全保障等作用。
然而,互联网的域名系统(DNS,Domain Name System)是一个分层分域分散管理的系统,域名数据分布于百万台以上的权威域名服务器中,由许许多多的组织或者机构分别管理和自己相关的部分。这些权威服务器通常并不开放域名数据传送权限。互联网中还有域名注册机构方便用户申请域名,它们往往并不开放注册域名列表访问权限。另一方面,在域命名空间中,域名按树形结构组织,这棵树可以在每个节点分出任意数量的分支,树的深度最多可达127层,树中的每个节点都有一个可能长达63个字符(包括字母和数字,不包括“.”号)的文本标签,因此,几乎不可能枚举巨大的域名空间。因此,如何在没有权威服务器的域名资源数据传送权限、没有域名注册机构的域名注册列表访问权限、巨大的域名空间不可枚举等约束条件下,获得比较齐全完备的域名数据成为当前面临的一个重要挑战性问题。
当前,根据已有研究(基于爬虫进行域名发现分析的研究与实现,孙涛,天津大学硕士学位论文,2016),获取域名数据的方法目前主要有以下几种。
(1)通过配置流量测量设备,对于采集到的DNS报文进行分析,从而得到域名和其对应的IP地址。这种方法所能获取的数据量与流量测量设备部署的位置密切相关,只能获取流量测量设备能测量的链路中传输的域名数据,对于大量流量测量设备测量不到的链路(例如许多国外的网络链路)无能为力。
(2)通过解析DNS服务器日志获取域名及其对应IP地址信息。这种方式需要互联网基础运营商或者DNS服务器管理员的配合和协作,加之DNS服务器数量巨大,因此往往只能获取一小部分DNS服务器的日志,其余大量DNS服务器的日志难以获取。
(3)基于爬虫进行域名发现分析的方法。这种方法选取一些门户网站作为搜索源用以作为域名爬取的起点,对指定网站进行深层次抓取,所能获取的数据量依赖于搜索源的数量和质量等一系列不确定因素,很多域名数据难以获得。
第一种方法中,由于管理和成本等因素,流量测量设备难以在国外的网络链路以及国内的大多数链路上部署,只能监测少部分链路,难以获取这些链路上的网络流量。第二种方法中,由于管理开销太大且DNS服务器太多,也难以采集国外的DNS服务器和大多数的国内域名服务器。因此,前两种方法都只能获取比较有限的部分域名数据,要发现全球域名在实践上几乎不可行。第三种方法基于爬虫进行域名发现分析的方法通过对指定网站基于URL(Uniform Resource Loactor统一资源定位符)深层次抓取,发现互联网域名信息,能够部分解决全球域名获取问题。但由于互联网中的许多网站往往包含大量的页面,而许多页面并不包含到其它网站的链接,并且许多页面内有的链接大部分是指向网站内部页面的链接,因此页面抓起过程中很可能因没有新链接就终止了,导致可能需要花费巨大的网络流量开销才获得有限的域名信息。即使因特网的所有页面能根据链接关联起来,而根据《中国互联网发展报告2018》,我国网页数量已经超过2800亿个,而截止2015年底全球网页总数就超过60万亿(www.yinxi.net)。第三种方法存在指数爆炸的问题,在时间以及带宽计算等资源有限的条件下只能获取部分页面,因此基于这种方法来发现全球的域名在实践上也是不可行的。
因此,目前还没有公开技术文件涉及能覆盖全球范围的高效的域名数据获取方法。
发明内容
本发明要解决的技术问题是提供一种基于Web的域名数据获取方法,解决现有域名数据获取方法流量开销大,部署实施困难,覆盖范围窄,所能获得的域名数据仅占全球因特网实际域名数据的一小部分的问题,提升域名数据获取的能力。
本发明包括以下步骤:
第一步,构建域名数据获取系统,域名数据获取系统由Web服务探测模块、Web页面获取模块、页面解析域名提取模块以及域名和IP地址集映射模块组成;域名数据获取系统安装在和因特网相连的计算机设备中,与因特网中的80端口即HTTP服务端口、443端口即HTTPS服务端口、53端口即DNS系统端口相连,可以访问因特网中的80端口、443端口以及53端口。该域名数据获取系统可以周期性地运行,以获取较新的域名数据。
所述Web服务探测模块与因特网、Web页面获取模块相连,Web服务探测模块扫描IPv4单播地址空间,从因特网扫描获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块,令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2,m1、m2、M均为正整数。
所述Web页面获取模块与因特网、Web服务探测模块、页面解析域名提取模块相连,从Web服务探测模块获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,通过HTTP协议或HTTPS协议从因特网中获取IPv4地址列表所对应的页面内容(从1个地址可能获取一个HTTP页面或一个HTTPS页面),建立页面内容数据库。设返回的页面数为N,页面内容数据库包含N个表项,每个表项包括三个域:IPv4地址、端口号、该IP地址对应的首页页面内容。N为正整数。由于许多机器虽然开放80端口或者443端口,但其并不提供开放的公共Web服务,因此N通常小于等于M。
所述页面解析域名提取模块与Web页面获取模块、域名和IP地址集映射模块相连,页面解析域名提取模块处理页面内容数据库的每一个页面内容,提取包含“http://”或“https://”的链接,从链接中提取域名数据,建立域名数据库。域名数据库包含N个表项,每个表项包括三个域,分别为IPv4地址、端口号和IPv4地址对应页面中含有的域名列表。
所述域名和IP地址集映射模块与因特网中的域名服务系统、页面解析域名提取模块相连,域名和IP地址集映射模块从域名数据库获取域名列表,建立不重复的域名集合(假设该集合中元素个数为K,K为正整数),通过向域名服务系统发送域名解析请求,解析域名集合中的每一个域名,建立域名和IP地址集映射数据库。域名和IP地址集映射数据库包括K个表项,每个表项包括一个域名和对应的IP地址集合。
第二步,选择网络扫描工具,并根据选定的网络扫描工具要求设置排除地址文件(exclude.txt)、配置文件config,方法是:
2.1根据数据获取时间要求以及运行环境约束(如网络带宽、速率限制、防火墙限制等)选择安装一种网络扫描工具,网络扫描工具包括Nmap、Zmap、Masscan,这几种工具主要是在速度、效率、配置参数和结果格式等方面存在不同,扫描的结果均包括这些内容:IP地址、端口号、开放标志(表示对应的端口是否打开)。Masscan扫描的速度和效率优于Nmap和Zmap,在千兆因特网访问带宽条件下可以在分钟级扫描完因特网。当域名数据获取系统的因特网访问带宽充足且要求能较快获取数据时可选择Masscan,当对数据获取时间不限要求或者带宽较低时选择Nmap或Zmap。
步骤2.2依据扫描工具所需文件格式,综合运用三种表示地址类型(精确地址、掩码表示的地址、用短横线连接的地址范围)设置排除地址文件(exclude.txt)。排除地址文件(exclude.txt)中包括以下几种地址:保留地址127.x.x.x(掩码表示的地址);三个私有地址网段10.x.x.x(掩码表示的地址),172.16.x.x—172.31.x.x(用短横线连接的地址范围),192.168.x.x(掩码表示的地址);代表在某些协议中不清楚的主机和目的网络的地址0.0.0.0(精确地址);受限的广播地址255.255.255.255(精确地址);组播地址网段224.0.0.0—239.255.255.255(用短横线连接的地址范围)。
步骤2.3依据扫描工具所需文件格式设置配置文件config,内容包含网络扫描工具名称、发包速率(根据计算机的处理能力和网络带宽等因素而定,比如常规设置10000,即每秒一万次)、扫描结果文件名(一般称为scanResult)、扫描地址范围(IPv4地址空间)和端口(80和443),排除地址文件(即exclude.txt)。
第三步,Web服务探测模块采用网络扫描工具扫描IPv4单播地址空间,方法为:
步骤3.1Web服务探测模块读取配置文件config,根据其中的网络扫描工具名称和发包速率、扫描结果文件名、排除地址文件等内容,构造对应的扫描工具命令,启动扫描工具扫描网络。
步骤3.2Web服务探测模块判定网络扫描工具是否报告已完成了扫描并生成了扫描结果文件,如果是,转步骤3.1;否则转步骤3.2继续等待生成扫描结果文件。
步骤3.3Web服务探测模块从扫描结果文件提取80端口开放的IPv4地址列表和443端口开放的IPv4地址列表。令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2。
步骤3.4将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块。
第四步,Web页面获取模块从Web服务探测模块获得80端口开放的IPv4地址列表以及443端口开放的IPv4地址列表,对于80端口开放的IPv4地址列表,向因特网发送HTTP网页请求,对于443端口开放的IPv4地址列表,向因特网发送HTTPS网页请求,从因特网获取返回的页面信息,建立页面内容数据库。具体方法是:
步骤4.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化页面内容数据库为空,页面内容数据库每个表项包含三个域:IPv4地址、端口号、页面内容。
步骤4.2Web页面获取模块对于80端口开放的IPv4地址列表中的m1个IPv4地址,分别发送HTTP请求。同时,Web页面获取模块对于443端口开放的地址列表中的m2个IPv4地址,分别发送HTTPS请求。
步骤4.3Web页面获取模块按页面请求结果到达的先后顺序处理:如果从因特网接收到所请求IPv4地址返回的页面内容,则Web页面获取模块构造页面内容数据库表项,包括对应的IPv4地址、端口号(80或者443)、返回的页面内容,将该表项存入页面内容数据库。令返回的页面数目为N,页面内容数据库包含N个IPv4地址和其对应的端口号与页面内容。
第五步,页面解析域名提取模块查询页面内容数据库中的N个表项,提取出每一个页面中的含有“http://”和“https://”的链接,使用正则表达式匹配方法从K1个链接中提取出K1个域名(一个链接对应一个域名),建立域名数据库。域名数据库包含N个IPv4地址、对应的端口号和对应的页面中含有的K1个域名组成的域名列表,K1为正整数。方法为:
步骤5.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化域名数据库为空,域名数据库的表项包含三个域:IPv4地址、IPv4地址对应的端口号、IPv4地址对应的页面中含有的域名列表。
步骤5.2初始化变量n=1。
步骤5.3读取页面内容数据库的第n个表项。
步骤5.4初始化第n个域名列表为空。
步骤5.5对页面内容数据库的第n个表项中的页面内容进行处理,通过“http://”和“https://”关键字匹配,提取出页面中的含有“http://”和“https://”的链接,令共含有K1个链接。使用正则表达式匹配方法(正则表达式匹配功能在编程语言类库或者函数库中实现,可直接使用,例如,在Java语言中可调用字符串类的matches()函数实现;Python语言中可调用正则表达式模块的compile()和search()等函数实现;C语言中可调用Perl-Compatible Regular Expression库中的regcomp()和regexec()等函数实现)从K1个链接中提取出K1个域名,将K1个域名加入第n个域名列表。K1为正整数。
步骤5.6将第n个表项的IPv4地址、端口号和第n个域名列表填到第n个域名数据库表项。
步骤5.7令n=n+1,若n≤N,转步骤5.3;若n>N,转第六步。
第六步,域名和IP地址集映射模块对域名数据库中的N个表项,向因特网中的域名服务系统发出域名解析请求(其中包括域名、请求类型等信息),根据域名解析请求返回结果(其中包含解析的域名,对应的地址数据等资源记录)获得域名数据库中所有表项中的域名和DNS系统中对应的IP地址集,建立域名和IP地址集映射数据库,包括域名和对应的IP地址集合。方法是:
步骤6.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化域名和IP地址集映射数据库为空,域名和IP地址集映射数据库中每个表项包括2个域:域名、域名对应的IP地址集合。
步骤6.2从域名数据库中获取N个域名数据库表项,提取N个表项中域名列表中的域名,构建域名集合,令该集合的数目为KK,KK为正整数。
步骤6.3对于域名集合中的KK个域名,从因特网的域名解析系统中获取并存储这KK个域名分别对应的地址集合。具体包含以下子步骤:
子步骤6.3.1初始化变量k=1。
子步骤6.3.2取出域名集合中的第k个域名。
子步骤6.3.3初始化第k个IP地址集合为空。
子步骤6.3.4域名和IP地址集映射模块根据第k个域名向对应域名解析服务器地址(比如谷歌提供的开放域名解析服务器地址8.8.8.8)发送域名解析请求。
子步骤6.3.5域名和IP地址集映射模块从对应域名解析服务器地址接到域名解析应答,提取出域名解析应答中和域名对应的IP地址列表(可能有多个,可能包含IPv4地址也可能包含IPv6地址),如果IP地址列表中所有的IP地址都已经在第k个IP地址集合中,则转子步骤6.3.7,否则执行子步骤6.3.6。
子步骤6.3.6域名和IP地址集映射模块将IP地址列表中的不在第k个IP地址集合中的IP地址加入第k个IP地址集合,转子步骤6.3.4。
子步骤6.3.7域名和IP地址集映射模块将第k个域名和第k个IP地址集合组成域名和IP地址集映射数据库第k个表项,并将第k个表项存入域名和IP地址集映射数据库。
子步骤6.3.8令k=k+1,若k≤KK,转子步骤6.3.2;若k>KK,表示已获得全球网站的域名和对应IP地址集,结束。
本发明提供的域名数据获取方法,创造性地利用了因特网的网络服务访问原理(即网络用户通过域名访问网站的过程最终会转化为IP地址访问网站的过程),将难以枚举的、几乎无限的域名空间的域名发现问题转化为基于可枚举的、有限的IPv4单播地址空间来求解,直接基于IPv4地址来获取全球网站首页,并进一步创造性地利用了因特网网站设计的一个重要特点(即网站首页的链接中通常包含有本网站的域名),仅从首页内容中就获取网站的域名和其它域名,从而实现对全球网站域名的高效获取。
本发明通过主动扫描公共的IPv4单播地址空间,获取因特网中开放80/443端口的IPv4地址列表,基于该地址列表,发送HTTP和HTTPS请求,获取对应的首页页面,然后处理这些页面提取每一个域名,并基于DNS建立了域名和IP地址集的对应关系。
采用本发明可以达到以下技术效果:
1.降低了流量开销,全球的公共IPv4单播地址数目不超过40亿,互联网网站数不超过10亿(互联网系统协会ISC统计,www.isc.org),本发明对一个IPv4地址获取不超过两个首页页面(一个HTTP页面,一个HTTPS页面),因此,和基于爬虫进行域名发现分析的方法相比,本方法极大地降低了提取大规模域名数据所需的流量开销;
2.提高了域名数据获取的广度和域名数据获取的效率,本发明将难以枚举的、几乎无限的域名空间的域名发现问题转化为基于可枚举的、有限的IPv4地址空间来求解,直接基于IPv4地址来获取全球网站首页,并且仅从首页内容中就获取网站的域名和其它域名,本发明枚举了可能提供Web服务的所有的IPv4单播地址(扫描时IPv4地址空间时排除了所有不属于IPv4单播地址范围的地址)进行处理,和基于爬虫进行域名发现分析的方法相比,极大地提高了域名数据获取的广度和域名数据获取的效率;
3.部署实施容易,本发明域名数据获取系统可以部署在任何访问因特网的计算机设备通过直接运行,避免了基于流量进行域名分析方法以及基于DNS服务器日志进行域名分析方法的部署制约限制。
附图说明
图1为本发明总体流程图;
图2为本发明第一步构建的域名数据获取系统逻辑结构图;
图3为第三步Web服务探测模扫描Web服务端口流程图
图4为第四步Web页面获取模块获取Web服务页面的流程图;
图5为第五步页面解析域名提取模块进行页面域名分析提取的流程图;
图6为第六步域名和IP地址集映射模块建立域名和IP地址集的流程图。
具体实施方式
图1为本发明总体流程图。如图1所示,本发明包括以下步骤:
第一步,构建域名数据获取系统,域名数据获取系统如图2所示,由Web服务探测模块、Web页面获取模块、页面解析域名提取模块以及域名和IP地址集映射模块组成;域名数据获取系统安装在和因特网相连的计算机设备中,与因特网中的80端口即HTTP服务端口、443端口即HTTPS服务端口、53端口即DNS系统端口相连,可以访问因特网中的80端口、443端口以及53端口。该域名数据获取系统可以周期性地运行,以获取较新的域名数据。
所述Web服务探测模块与因特网、Web页面获取模块相连,Web服务探测模块扫描IPv4单播地址空间,从因特网扫描获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块,令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2,m1、m2、M均为正整数。
所述Web页面获取模块与因特网、Web服务探测模块、页面解析域名提取模块相连,从Web服务探测模块获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,通过HTTP协议或HTTPS协议从因特网中获取IPv4地址列表所对应的页面内容,建立页面内容数据库。设返回的页面数为N,页面内容数据库包含N个表项,每个表项包括三个域:IPv4地址、端口号、该IP地址对应的首页页面内容。N为正整数。
所述页面解析域名提取模块与Web页面获取模块、域名和IP地址集映射模块相连,页面解析域名提取模块处理页面内容数据库的每一个页面内容,提取包含“http://”或“https://”的链接,从链接中提取域名数据,建立域名数据库。域名数据库包含N个表项,每个表项包括三个域,分别为IPv4地址、端口号和IPv4地址对应页面中含有的域名列表。
所述域名和IP地址集映射模块与因特网中的域名服务系统、页面解析域名提取模块相连,域名和IP地址集映射模块从域名数据库获取域名列表,建立不重复的域名集合(假设该集合中元素个数为K,K为正整数),通过向域名服务系统发送域名解析请求,解析域名集合中的每一个域名,建立域名和IP地址集映射数据库。域名和IP地址集映射数据库包括K个表项,每个表项包括一个域名和对应的IP地址集合。
第二步,选择网络扫描工具,并根据选定的网络扫描工具要求设置排除地址文件(exclude.txt)、配置文件config,方法是:
2.1根据数据获取时间要求以及运行环境约束(如网络带宽、速率限制、防火墙限制等)选择安装一种网络扫描工具,当域名数据获取系统的因特网访问带宽充足且要求能较快获取数据时可选择Masscan,当对数据获取时间不限要求或者带宽较低时选择Nmap或Zmap。
步骤2.2依据扫描工具所需文件格式,综合运用三种表示地址类型(精确地址、掩码表示的地址、用短横线连接的地址范围)设置排除地址文件(exclude.txt)。排除地址文件(exclude.txt)中包括以下几种地址:保留地址127.x.x.x(掩码表示的地址);三个私有地址网段10.x.x.x(掩码表示的地址),172.16.x.x—172.31.x.x(用短横线连接的地址范围),192.168.x.x(掩码表示的地址);代表在某些协议中不清楚的主机和目的网络的地址0.0.0.0(精确地址);受限的广播地址255.255.255.255(精确地址);组播地址网段224.0.0.0—239.255.255.255(用短横线连接的地址范围)。
步骤2.3依据扫描工具所需文件格式设置配置文件config,内容包含网络扫描工具名称、发包速率(根据计算机的处理能力和网络带宽等因素而定,常规设置10000,即每秒一万次)、扫描结果文件名(称为scanResult)、扫描地址范围(IPv4地址空间)和端口(80和443),排除地址文件(即exclude.txt)。
第三步,Web服务探测模块采用网络扫描工具扫描IPv4单播地址空间,如图3所示,方法为:
步骤3.1Web服务探测模块读取配置文件config,根据其中的网络扫描工具名称和发包速率、扫描结果文件名、排除地址文件等内容,构造对应的扫描工具命令,启动扫描工具扫描网络。
步骤3.2Web服务探测模块判定网络扫描工具是否报告已完成了扫描并生成了扫描结果文件,如果是,转步骤3.1;否则转步骤3.2继续等待生成扫描结果文件。
步骤3.3Web服务探测模块从扫描结果文件提取80端口开放的IPv4地址列表和443端口开放的IPv4地址列表。令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2。
步骤3.4将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块。
第四步,Web页面获取模块从Web服务探测模块获得80端口开放的IPv4地址列表以及443端口开放的IPv4地址列表,对于80端口开放的IPv4地址列表,向因特网发送HTTP网页请求,对于443端口开放的IPv4地址列表,向因特网发送HTTPS网页请求,从因特网获取返回的页面信息,建立页面内容数据库。如图4所示,具体方法是:
步骤4.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化页面内容数据库为空,页面内容数据库每个表项包含三个域:IPv4地址、端口号、页面内容。
步骤4.2Web页面获取模块对于80端口开放的IPv4地址列表中的m1个IPv4地址,分别发送HTTP请求。同时,Web页面获取模块对于443端口开放的地址列表中的m2个IPv4地址,分别发送HTTPS请求。
步骤4.3Web页面获取模块按页面请求结果到达的先后顺序处理:如果从因特网接收到所请求IPv4地址返回的页面内容,则Web页面获取模块构造页面内容数据库表项,包括对应的IPv4地址、端口号(80或者443)、返回的页面内容,将该表项存入页面内容数据库。令返回的页面数目为N,页面内容数据库包含N个IPv4地址和其对应的端口号与页面内容。
第五步,页面解析域名提取模块查询页面内容数据库中的N个表项,提取出每一个页面中的含有“http://”和“https://”的链接,使用正则表达式匹配方法从K1个链接中提取出K1个域名,建立域名数据库。域名数据库包含N个IPv4地址、对应的端口号和对应的页面中含有的K1个域名组成的域名列表,K1为正整数。如图5所示,方法为:
步骤5.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化域名数据库为空,域名数据库的表项包含三个域:IPv4地址、IPv4地址对应的端口号、IPv4地址对应的页面中含有的域名列表。
步骤5.2初始化变量n=1。
步骤5.3读取页面内容数据库的第n个表项。
步骤5.4初始化第n个域名列表为空。
步骤5.5对页面内容数据库的第n个表项中的页面内容进行处理,通过“http://”和“https://”关键字匹配,提取出页面中的含有“http://”和“https://”的链接,令共含有K1个链接。使用正则表达式匹配方法(正则表达式匹配功能在编程语言类库或者函数库中实现,可直接使用,例如,在Java语言中可调用字符串类的matches()函数实现;Python语言中可调用正则表达式模块的compile()和search()等函数实现;C语言中可调用Perl-Compatible Regular Expression库中的regcomp()和regexec()等函数实现)从K1个链接中提取出K1个域名,将K1个域名加入第n个域名列表。K1为正整数。
步骤5.6将第n个表项的IPv4地址、端口号和第n个域名列表填到第n个域名数据库表项。
步骤5.7令n=n+1,若n≤N,转步骤5.3;若n>N,转第六步。
第六步,域名和IP地址集映射模块对域名数据库中的N个表项,向因特网中的域名服务系统发出域名解析请求(其中包括域名、请求类型等信息),根据域名解析请求返回结果(其中包含解析的域名,对应的地址数据等资源记录)获得域名数据库中所有表项中的域名和DNS系统中对应的IP地址集,建立域名和IP地址集映射数据库,包括域名和对应的IP地址集合。如图6所示,方法是:
步骤6.1运行MySQL(或其它类型的数据库软件Oracle、SQLSERVER、PostgreSQL),初始化域名和IP地址集映射数据库为空,域名和IP地址集映射数据库中每个表项包括2个域:域名、域名对应的IP地址集合。
步骤6.2从域名数据库中获取N个域名数据库表项,提取N个表项中域名列表中的域名,构建域名集合,令该集合的数目为KK,KK为正整数。
步骤6.3对于域名集合中的KK个域名,从因特网的域名解析系统中获取并存储这KK个域名分别对应的地址集合。具体包含以下子步骤:
子步骤6.3.1初始化变量k=1。
子步骤6.3.2取出域名集合中的第k个域名。
子步骤6.3.3初始化第k个IP地址集合为空。
子步骤6.3.4根据第k个域名向对应域名解析服务器地址(比如谷歌提供的开放域名解析服务器地址8.8.8.8)发送域名解析请求。
子步骤6.3.5从对应域名解析服务器地址接到域名解析应答,提取出域名解析应答中和域名对应的IP地址列表(可能有多个,可能包含IPv4地址也可能包含IPv6地址),如果IP地址列表中所有的IP地址都已经在第k个IP地址集合中,则转子步骤6.3.7,否则执行子步骤6.3.6。
子步骤6.3.6将IP地址列表中的不在第k个IP地址集合中的IP地址加入第k个IP地址集合,转子步骤6.3.4。
子步骤6.3.7将第k个域名和第k个IP地址集合组成域名和IP地址集映射数据库第k个表项,并将第k个表项存入域名和IP地址集映射数据库。
子步骤6.3.8令k=k+1,若k≤KK,转子步骤6.3.2;若k>KK,表示已获得全球网站的域名和对应IP地址集,结束。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种基于Web的域名数据获取方法,其特征在于包括以下步骤:
第一步,构建域名数据获取系统,域名数据获取系统由Web服务探测模块、Web页面获取模块、页面解析域名提取模块以及域名和IP地址集映射模块组成;域名数据获取系统安装在和因特网相连的计算机设备中,与因特网中的80端口即HTTP服务端口、443端口即HTTPS服务端口、53端口即DNS系统端口相连;
Web服务探测模块与因特网、Web页面获取模块相连,Web服务探测模块扫描IPv4单播地址空间,从因特网扫描获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块,令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2;m1、m2、M均为正整数;
Web页面获取模块与因特网、Web服务探测模块、页面解析域名提取模块相连,从Web服务探测模块获得80端口开放的IPv4地址列表和443端口开放的IPv4地址列表,通过HTTP协议或HTTPS协议从因特网中获取IPv4地址列表所对应的页面内容,建立页面内容数据库;设返回的页面数为N,页面内容数据库包含N个表项,每个表项包括三个域:IPv4地址、端口号、该IP地址对应的首页页面内容;N为小于等于M的正整数;
页面解析域名提取模块与Web页面获取模块、域名和IP地址集映射模块相连,页面解析域名提取模块处理页面内容数据库的每一个页面内容,提取包含“http://”或“https://”的链接,从链接中提取域名数据,建立域名数据库;域名数据库包含N个表项,每个表项包括三个域:IPv4地址、端口号和IPv4地址对应页面中含有的域名列表;
域名和IP地址集映射模块与因特网中的域名服务系统、页面解析域名提取模块相连,域名和IP地址集映射模块从域名数据库获取域名列表,建立不重复的域名集合,通过向域名服务系统发送域名解析请求,解析域名集合中的每一个域名,建立域名和IP地址集映射数据库;域名和IP地址集映射数据库包括K个表项,每个表项包括一个域名和对应的IP地址集合;K为正整数;
第二步,选择网络扫描工具,并根据选定的网络扫描工具要求设置排除地址文件exclude.txt、配置文件config,方法是:
2.1根据数据获取时间要求以及运行环境约束选择安装一种网络扫描工具,当域名数据获取系统的因特网访问带宽充足且要求能较快获取数据时选择Masscan,当对数据获取时间不限要求或者带宽较低时选择Nmap或Zmap;
步骤2.2依据扫描工具所需文件格式,设置排除地址文件exclude.txt;
步骤2.3依据扫描工具所需文件格式设置配置文件config,内容包含网络扫描工具名称、发包速率、扫描结果文件名、扫描地址范围和端口,排除地址文件即exclude.txt;
第三步,Web服务探测模块采用网络扫描工具扫描IPv4单播地址空间,方法为:
步骤3.1Web服务探测模块读取配置文件config,根据其中的网络扫描工具名称和发包速率、扫描结果文件名、排除地址文件,构造对应的扫描工具命令,启动扫描工具扫描网络;
步骤3.2Web服务探测模块判定网络扫描工具是否报告已完成了扫描并生成了扫描结果文件,如果是,转步骤3.1;否则转步骤3.2继续等待生成扫描结果文件;
步骤3.3Web服务探测模块从扫描结果文件提取80端口开放的IPv4地址列表和443端口开放的IPv4地址列表;令80端口开放的IPv4地址列表中IPv4地址有m1个,443端口开放的IPv4地址列表中IPv4地址有m2个,IPv4地址共M个,M=m1+m2;
步骤3.4将80端口开放的IPv4地址列表和443端口开放的IPv4地址列表发送给Web页面获取模块;
第四步,Web页面获取模块从Web服务探测模块获得80端口开放的IPv4地址列表以及443端口开放的IPv4地址列表,对于80端口开放的IPv4地址列表,向因特网发送HTTP网页请求,对于443端口开放的IPv4地址列表,向因特网发送HTTPS网页请求,从因特网获取返回的页面信息,建立页面内容数据库;具体方法是:
步骤4.1运行数据库软件,初始化页面内容数据库为空,页面内容数据库每个表项包含三个域:IPv4地址、端口号、页面内容;
步骤4.2Web页面获取模块对于80端口开放的IPv4地址列表中的m1个IPv4地址,分别发送HTTP请求;同时,Web页面获取模块对于443端口开放的地址列表中的m2个IPv4地址,分别发送HTTPS请求;
步骤4.3Web页面获取模块按页面请求结果到达的先后顺序处理:如果从因特网接收到所请求IPv4地址返回的页面内容,则Web页面获取模块构造页面内容数据库表项,包括对应的IPv4地址、端口号、返回的页面内容,将该表项存入页面内容数据库;令返回的页面数目为N,页面内容数据库包含N个IPv4地址和其对应的端口号与页面内容;
第五步,页面解析域名提取模块查询页面内容数据库中的N个表项,提取出每一个页面中含有“http://”和“https://”的链接,从K1个链接中提取出K1个域名,建立域名数据库;域名数据库包含N个IPv4地址、对应的端口号和对应的页面中含有的K1个域名组成的域名列表;方法为:
步骤5.1运行数据库软件,初始化域名数据库为空,域名数据库的表项包含三个域:IPv4地址、IPv4地址对应的端口号、IPv4地址对应的页面中含有的域名列表;
步骤5.2初始化变量n=1;
步骤5.3读取页面内容数据库的第n个表项;
步骤5.4初始化第n个域名列表为空;
步骤5.5对页面内容数据库的第n个表项中的页面内容进行处理,通过“http://”和“https://”关键字匹配,提取出页面中的含有“http://”和“https://”的链接,令共含有K1个链接;从K1个链接中提取出K1个域名,将K1个域名加入第n个域名列表;K1为正整数;
步骤5.6将第n个表项的IPv4地址、端口号和第n个域名列表填到第n个域名数据库表项;
步骤5.7令n=n+1,若n≤N,转步骤5.3;若n>N,转第六步;
第六步,域名和IP地址集映射模块对域名数据库中的N个表项,向因特网中的域名服务系统发出域名解析请求,根据域名解析请求返回结果获得域名数据库中所有表项中的域名和DNS系统中对应的IP地址集,建立域名和IP地址集映射数据库;方法是:
步骤6.1运行数据库软件,初始化域名和IP地址集映射数据库为空,域名和IP地址集映射数据库中每个表项包括2个域:域名、域名对应的IP地址集合;
步骤6.2从域名数据库中获取N个域名数据库表项,提取N个表项中域名列表中的域名,构建域名集合,令该集合的数目为KK,KK为正整数;
步骤6.3对于域名集合中的KK个域名,从因特网的域名解析系统中获取并存储这KK个域名分别对应的地址集合;具体包含以下子步骤:
子步骤6.3.1初始化变量k=1;
子步骤6.3.2取出域名集合中的第k个域名;
子步骤6.3.3初始化第k个IP地址集合为空;
子步骤6.3.4域名和IP地址集映射模块根据第k个域名向对应域名解析服务器地址发送域名解析请求;
子步骤6.3.5域名和IP地址集映射模块从对应域名解析服务器地址接到域名解析应答,提取出域名解析应答中和域名对应的IP地址列表,如果IP地址列表中所有的IP地址都已经在第k个IP地址集合中,则转子步骤6.3.7,否则执行子步骤6.3.6;
子步骤6.3.6域名和IP地址集映射模块将IP地址列表中的不在第k个IP地址集合中的IP地址加入第k个IP地址集合,转子步骤6.3.4;
子步骤6.3.7域名和IP地址集映射模块将第k个域名和第k个IP地址集合组成域名和IP地址集映射数据库第k个表项,并将第k个表项存入域名和IP地址集映射数据库;
子步骤6.3.8令k=k+1,若k≤KK,转子步骤6.3.2;若k>KK,表示已获得全球网站的域名和对应IP地址集,结束。
2.如权利要求1所述的一种基于Web的域名数据获取方法,其特征在于2.1步所述运行环境约束包括网络带宽、速率限制、防火墙限制。
3.如权利要求1所述的一种基于Web的域名数据获取方法,其特征在于2.2步所述设置排除地址文件exclude.txt的方法是运用精确地址、掩码表示的地址、用短横线连接的地址范围来表示地址。
4.如权利要求3所述的一种基于Web的域名数据获取方法,其特征在于所述排除地址文件exclude.txt中包括以下几种地址:保留地址127.x.x.x;三个私有地址网段10.x.x.x,172.16.x.x—172.31.x.x,192.168.x.x;代表在某些协议中不清楚的主机和目的网络的地址0.0.0.0;受限的广播地址255.255.255.255;组播地址网段224.0.0.0—239.255.255.255。
5.如权利要求1所述的一种基于Web的域名数据获取方法,其特征在于2.3步所述配置文件config中的发包速率设置为每秒一万次。
6.如权利要求1所述的一种基于Web的域名数据获取方法,其特征在于步骤5.5所述从K1个链接中提取出K1个域名采用正则表达式匹配方法。
7.如权利要求6所述的一种基于Web的域名数据获取方法,其特征在于所述正则表达式匹配方法指Java语言中调用字符串类的matches()函数,或Python语言中正则表达式模块的compile()和search()函数,或C语言中Perl-Compatible Regular Expression库中的regcomp()和regexec()函数。
8.如权利要求1所述的一种基于Web的域名数据获取方法,其特征在于所述数据库软件指MySQL、Oracle、SQLSERVER、PostgreSQL。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911072822.XA CN110798545B (zh) | 2019-11-05 | 2019-11-05 | 一种基于Web的域名数据获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911072822.XA CN110798545B (zh) | 2019-11-05 | 2019-11-05 | 一种基于Web的域名数据获取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110798545A true CN110798545A (zh) | 2020-02-14 |
CN110798545B CN110798545B (zh) | 2020-08-18 |
Family
ID=69442758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911072822.XA Active CN110798545B (zh) | 2019-11-05 | 2019-11-05 | 一种基于Web的域名数据获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110798545B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111371915A (zh) * | 2020-02-26 | 2020-07-03 | 北京天维信通科技有限公司 | Ip地址列表维护方法和装置及网关设备 |
CN113709173A (zh) * | 2021-09-02 | 2021-11-26 | 南方电网数字电网研究院有限公司 | 针对电力系统网络服务进行外部无干扰监测的方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102843445A (zh) * | 2012-09-29 | 2012-12-26 | 北京奇虎科技有限公司 | 一种浏览器及其进行域名解析的方法 |
CN103078968A (zh) * | 2013-01-22 | 2013-05-01 | 华为技术有限公司 | 域名查询方法、ip分族方法、装置和设备 |
US20150244670A1 (en) * | 2012-09-29 | 2015-08-27 | Beijing Qihoo Technology Company Limited | Browser and method for domain name resolution by the same |
CN105608134A (zh) * | 2015-12-18 | 2016-05-25 | 盐城工学院 | 一种基于多线程的网络爬虫系统及其网页爬取方法 |
CN105763633A (zh) * | 2016-04-14 | 2016-07-13 | 上海牙木通讯技术有限公司 | 一种域名和网站访问行为的关联方法 |
US20160234330A1 (en) * | 2015-02-11 | 2016-08-11 | Go Daddy Operating Company, LLC | System and method for mobile application deep linking |
CN106302842A (zh) * | 2015-05-21 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种域名解析方法、装置及系统 |
CN108156210A (zh) * | 2016-12-06 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 目标资源的获取方法和装置 |
CN108900581A (zh) * | 2018-06-12 | 2018-11-27 | 恒安嘉新(北京)科技股份公司 | 一种大型网站的关键特征知识库的建立方法 |
CN110134403A (zh) * | 2019-06-04 | 2019-08-16 | 厦门大学嘉庚学院 | 基于异步http请求的可配置域名解析爬虫框架及方法 |
-
2019
- 2019-11-05 CN CN201911072822.XA patent/CN110798545B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102843445A (zh) * | 2012-09-29 | 2012-12-26 | 北京奇虎科技有限公司 | 一种浏览器及其进行域名解析的方法 |
US20150244670A1 (en) * | 2012-09-29 | 2015-08-27 | Beijing Qihoo Technology Company Limited | Browser and method for domain name resolution by the same |
CN103078968A (zh) * | 2013-01-22 | 2013-05-01 | 华为技术有限公司 | 域名查询方法、ip分族方法、装置和设备 |
US20160234330A1 (en) * | 2015-02-11 | 2016-08-11 | Go Daddy Operating Company, LLC | System and method for mobile application deep linking |
CN106302842A (zh) * | 2015-05-21 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种域名解析方法、装置及系统 |
CN105608134A (zh) * | 2015-12-18 | 2016-05-25 | 盐城工学院 | 一种基于多线程的网络爬虫系统及其网页爬取方法 |
CN105763633A (zh) * | 2016-04-14 | 2016-07-13 | 上海牙木通讯技术有限公司 | 一种域名和网站访问行为的关联方法 |
CN108156210A (zh) * | 2016-12-06 | 2018-06-12 | 腾讯科技(深圳)有限公司 | 目标资源的获取方法和装置 |
CN108900581A (zh) * | 2018-06-12 | 2018-11-27 | 恒安嘉新(北京)科技股份公司 | 一种大型网站的关键特征知识库的建立方法 |
CN110134403A (zh) * | 2019-06-04 | 2019-08-16 | 厦门大学嘉庚学院 | 基于异步http请求的可配置域名解析爬虫框架及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111371915A (zh) * | 2020-02-26 | 2020-07-03 | 北京天维信通科技有限公司 | Ip地址列表维护方法和装置及网关设备 |
CN111371915B (zh) * | 2020-02-26 | 2022-05-20 | 北京天维信通科技有限公司 | Ip地址列表维护方法和装置及网关设备 |
CN113709173A (zh) * | 2021-09-02 | 2021-11-26 | 南方电网数字电网研究院有限公司 | 针对电力系统网络服务进行外部无干扰监测的方法 |
CN113709173B (zh) * | 2021-09-02 | 2023-02-10 | 南方电网数字电网研究院有限公司 | 针对电力系统网络服务进行外部无干扰监测的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110798545B (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107645573B (zh) | 一种探测递归域名服务器转发配置的方法 | |
CN103685598B (zh) | 在IPv6网络中发现活跃IP地址的方法及装置 | |
US10645057B2 (en) | Domain name system identification and attribution | |
CN108011995A (zh) | 异地多活的实现方法、异地多活服务平台及存储介质 | |
US10693834B2 (en) | Client subnet efficiency by equivalence class aggregation | |
US10122722B2 (en) | Resource classification using resource requests | |
CN101873358A (zh) | 一种基于域名解析的链路负载均衡方法和设备 | |
CN110798545B (zh) | 一种基于Web的域名数据获取方法 | |
EP3135021B1 (en) | Method and system for identifying network resources | |
JP5415390B2 (ja) | フィルタリング方法、フィルタリングシステム及びフィルタリングプログラム | |
CN103685584A (zh) | 一种基于隧道技术的反域名劫持方法和系统 | |
CN108111639A (zh) | 一种提高域名系统可用性的方法及系统 | |
CN101651718B (zh) | 一种改变ip流量所用协议栈的方法和系统 | |
CN108833424B (zh) | 一种获取域名所有资源记录的系统 | |
US9866614B2 (en) | Methods for website version control using bucket cookies | |
CN107222588A (zh) | 一种提高dns可用性的方法及系统 | |
CN115190107B (zh) | 基于泛域名多子系统管理方法、管理终端及可读存储介质 | |
CN116566945A (zh) | 去中心化应用的访问方法、装置、电子设备及存储介质 | |
CN105245626B (zh) | 在专网中使用快捷域名实现网站寻址的方法 | |
Gañán | WHOIS sunset? A primer in Registration Data Access Protocol (RDAP) performance. | |
CN111885220B (zh) | 一种目标单位ip资产主动获取与验证方法 | |
KR20080086096A (ko) | 키워드 처리시스템, 키워드 처리방법 및 이를 실행시키기위한 프로그램을 기록한 기록매체 | |
CN1540929A (zh) | 一种分布式网络主动测试结果存储方法 | |
JP2015186001A (ja) | 通信サービス分類装置、方法及びプログラム | |
Velan | EventFlow: Network flow aggregation based on user actions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |