Python根据域名批量获取IP地址和经纬度(2021.12.1)
Python批量获取域名对应的IP地址和经纬度
- 1、DN、DNS、URL简介
- 1.1 域名
- 1.1.1 不同类型的域名
- 1.1.1.1 TLDs: Top-Level Domains 顶级域
- 1.1.1.2 ccTLDs: Country-Code Top-Level Domains 国家/地区代码顶级域
- 1.1.1.3 gTLDs: Generic Top Level Domains 通用顶级域
- 1.1.1.4 Other Domain Name Types 其他域名类型
- 1.1.1.4.1 二级域
- 1.1.1.4.2 子域
- 1.1.1.4.3 自由域
- 1.2 DNS
- 1.3 IP地址
- 1.4 URL
- 2、查询域名对应的IP地址或地理位置(以baidu.com为例)
- 2.1 本机 ping(联网)
- 2.2 一些提供域名查询IP或地理位置服务的网站
- 2.2.1 站长之家(IP+地理位置)
- 2.2.2 ip.cn(IP+地理位置)
- 2.2.3 ip138(IP+地理位置)
- 2.2.4 ip.tongmengguo(IP+地理位置)
- 2.2.5 ip.chacuo(IP+经纬度+地图定位)
- 2.2.6 ip.yqie(IP+地理位置+地图定位)
- 2.2.7 netcraft(IP+地理位置+网站排名)
- 2.2.8 IPAddress(IP+地理位置+经纬度+地图定位+访问排名 推荐使用)
- 3、Python批量获取记事本中域名的IP地址和经纬度实例(利用IPAddress网站接口)
- 3.1 IPAddress网站分析(以baidu.com为例)
- 3.1.1 Domain Summary
- 3.1.2 IP Address and Server Location
- 3.1.3 Website and Web Server Information
- 3.2 Python代码实现(Python 3.8.3)
- 3.2.1 根据域名获取IP和经纬度的自定义函数代码 GetIPByDomainName.py
- 3.2.2 新建InputParameterInvokeGetByDomainName.py利用cmd命令行传参调用GetIPByDomainName
- 3.2.3 准备域名数据文件 domains.txt
- 3.2.4 新建Invoke.py调用GetIPByDomainName来批量获取domains.txt中所有域名的IP地址和经纬度
- 3.2.5 改写Invoke.py调用GetIPByDomainName来批量获取domains.txt中所有域名的IP地址(更新本地hosts文件)
1、DN、DNS、URL简介
域名是Internet
上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时指地理位置),它由一串用点分隔的名字组成,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
1.1 域名
域名是由网站名和域名扩展名组成的网址。名称由字母、数字、连字符组成,而域扩展通常是几个字母的组合。如果没有域名,那么用户只能使用互联网协议IP
地址访问网站。但IP地址很难记住,因此域名的目的是帮助访问者找到一个网站。
1.1.1 不同类型的域名
由域名和扩展名组成的域名是互联网基础设施的关键部分,因此包含多种不同的类型。域名是网站的物理地址的等价物,它能够帮助用户在浏览器上轻松找到服务器站点,而不是使用其IP地址。
1.1.1.1 TLDs: Top-Level Domains 顶级域
顶级域是域名扩展,但.com
是最受欢迎的扩展,超过52%的网站都有TLD。使用一个更流行的扩展驱动更高的有机流量,因为用户通常在默认情况下编写它。
1.1.1.2 ccTLDs: Country-Code Top-Level Domains 国家/地区代码顶级域
国家/地区代码顶级域是特定于特定国家/地区的扩展,它由两个基于国际国家代码的字母组成。举例来说,日本的站点可使用.jp
作为扩展名,而巴西的站点使用.br
,英国广播公司使用BBC.co.uk
面向英国读者,使用BBC.com
面向国际观众。这样依赖,国际公司就可以区分不同地区的内容。
1.1.1.3 gTLDs: Generic Top Level Domains 通用顶级域
通用顶级域是不依赖国家代码的扩展,这些扩展是由指定的机构或组织赞助的。但一些通用TLD
仅限于特定类型的注册人。如学术机构可以使用.edu,政府机构可以使用.gov。
1.1.1.4 Other Domain Name Types 其他域名类型
1.1.1.4.1 二级域
二级域(SLD
)位于域名层次结构中TLD
的下方。SLD是位于最后一个点左侧的域名部分,以www.baidu.com
为例,baidu
是SLD
,而.com
是TLD
。
1.1.1.4.2 子域
子域是一个独立于较大域的分区,但仍然共享相同的服务器。不需要购买和注册子域。从技术上讲,大多数URL
上的www
是一个子域,表示站点是万维网的一部分。子域最常见的用途是将web内容组织并划分为单独的部分。例如谷歌使用developers.Google.com为开发者提供特定信息。它的另一个用途是创建另一个名称相同但语言不同的网站,以维基百科为例,每种语言都有一个单独的子域:英语版本使用en.wikipedia.org
,西班牙语版本使用es.wikipedia.org
。
1.1.1.4.3 自由域
一些网站建设者的管理系统经常为新用户提供免费域名,免费web
地址通常使用与子域相同的结构,这样初学者在投资网站之前会利用这个机会创建自己的网站。
关于域名,还应注意以下几点:
- 每个域名都连接到一个
IP
地址,DNS
服务器将两者连接起来; - 所有值得信赖的域名注册人都收集在
ICANN
数据库中; - 服务器负责存储网站的文件;
com
是最受欢迎的顶级域名,超过52%
的网站使用它;- 特定国家/地区的网站使用国家/地区代码;
- 一些
GTLD
仅适用于特定的用例,例如用于学术机构的.edu
; - 更流行的域名往往更昂贵;
- 每个域名注册商都有不同的注册流程;
- 有域名生成器可以帮助查找可用名称;
- 域名可以从一个提供商转移到另一个提供商。
1.2 DNS
把域名翻译成IP
地址的软件称为域名系统,即DNS
。DNS
(Domain Name Server,域名服务器)是进行域名(domain name
)和与之相对应的IP
地址 (IP address
)转换的服务器。DNS
中保存了一张域名和与之相对应的IP地址的表,以解析消息的域名,解析过程如下图所示。
在互联网上,域名解析由域名系统(DNS
)处理。使用DNS
,可以使用host.domain
格式的名称来代替目标的IP
地址。当连接启动时,源主机将从DNS服务器请求目标主机的IP地址。DNS服务器将使用目标的IP地址进行回复。然后,该IP地址将用于发送到该名称的所有通信。
每个网站都有以下两个主要元素:域名和web
托管服务器。每个域都链接到一个IP
地址(域名指向承载站点的web
服务器),当用户在浏览器中输入域名时,服务器将通过组成域名系统(DNS
)的全局服务器网络进行搜索。DNS
服务器将搜索与域名关联的IP
地址。包含有关IP
地址信息的服务器将其返回到web
浏览器。然后它将从域的托管服务器请求有关站点的数据。web
服务器存储网站的所有数据,包括文件、数据库和HTML
代码。一旦托管服务器发回数据,web
浏览器就会将其转换为用户可以访问的网页。
1.3 IP地址
IP
代表Internet协议,描述了在网络上创建和传输数据包或数据报的一组标准和要求。在计算机网络的OSI
模型中,IP
将被视为网络层的一部分。传统上,IP
与更高级别的协议(尤其是TCP
)结合使用,IP标准由RFC 791管理。
IP地址是二进制数字,但它通常以十进制形式(IPv4
)或十六进制形式(IPv6
)表示,以便于人类读取和使用。IP地址是唯一标识网络上特定接口的数字表示,IPv4
的地址长度为32
位。这允许最多232个唯一地址。IPv6
中的地址为128
位,允许使用2128个唯一地址。两个版本的总可用地址池都因各种保留地址和其他考虑因素而减少。
Class |
Leading bits |
Size of network number bit field |
Size of rest bit field |
Number of networks |
Addresses per network |
Total addresses in class |
Start address | End address |
---|---|---|---|---|---|---|---|---|
Class A | 0 | 8 | 24 | 128 (27) | 16,777,216 (224) | 2,147,483,648 (231) | 0.0.0.0 | 127.255.255.255 |
Class B | 10 | 16 | 16 | 16,384 (214) | 65,536 (216) | 1,073,741,824 (230) | 128.0.0.0 | 191.255.255.255 |
Class C | 110 | 24 | 8 | 2,097,152 (221) | 256 (28) | 536,870,912 (229) | 192.0.0.0 | 223.255.255.255 |
Class D (multicast) | 1110 | not defined | not defined | not defined | not defined | 268,435,456 (228) | 224.0.0.0 | 239.255.255.255 |
Class E (reserved) | 1111 | not defined | not defined | not defined | not defined | 268,435,456 (228) | 240.0.0.0 | 255.255.255.255 |
目前使用的IP有两个版本:IPv4
和IPv6
,最初的IPv4协议今天仍然在互联网和许多公司网络上使用。但IPv4无法为所有连接到Internet
的设备提供足够的唯一地址。升级后的IPv6
不仅大大增加了可用的地址空间,还提高IP数据包头的效率并改进了路由的安全性。IPv4地址实际上是32位二进制数,由上面提到的两个子地址(标识符)组成,分别标识网络和网络主机,虚拟边界将两者分开。因此,IP地址通常显示为0-255之间的4个八位数字,以十进制形式而不是二进制形式表示。IPv4
地址由两部分组成。地址中的第一个数字指定网络,后一个数字指定特定主机。子网掩码指定地址的哪个部分是网络部分,哪个部分是特定主机的地址。IPv6
地址由八组四个十六进制数字表示,每组数字用冒号分隔。IPv6地址示例:2DAB:FFFF:0000:3EAE:01AA:00FF:DD72:2C4A
当以二进制表示时,任何位设置为1意味着IP
地址中的对应位是网络地址的一部分。所有设置为零的位将IP
地址中的对应位标记为主机地址的一部分。标记子网掩码的位必须是连续的位。大多数子网掩码以255开头。然后继续,直到网络掩码结束。C类子网掩码应为255.255.255.0。
在地址空间内,某些网络是为专用网络(非公有)保留的。来自这些网络的数据包不会通过公共互联网路由,这为专用网络提供了一种在不干扰其他网络的情况下使用内部IP地址的方法。专用网络(私有网络)地址如下:
10.0.0.1 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
此外还有某些IPv4
地址被预留用于特定用途:
127.0.0.0 #本地回环(主机自己的接口)
224.0.0.0 #IP多播
255.255.255.255 #广播(发送到网络上的所有接口)
1.4 URL
URL
由协议、域和路径组成。协议显示站点是否具有SSL
证书(http or https),但URL
只有在将访问者引导到站点上的特定页面时才具有路径。虽然域名和URL
(统一资源定位器)有相似之处,但所指不同:URL
作为一个完整的网站地址,可以将访问者引导到网站上的特定页面;域名只是URL
中的一部分。
2、查询域名对应的IP地址或地理位置(以baidu.com为例)
2.1 本机 ping(联网)
Win+<R打开cmd命令行窗口,输入命令ping baidu.com
后回车可看到如下图所示结果,对应IP地址为220.181.38.148
.
2.2 一些提供域名查询IP或地理位置服务的网站
对于一台联网的主机而言,可以利用浏览器访问网络上的一些域名服务来查找对应的IP
地址或地理位置,如站长之家、ip.cn、ip138、ip.tongmengguo、ip.chacuo、ip.yqie、netcraft、IPAddress等。尽管这些网站都可以查询到域名对应的IP地址和地理位置,但最后netcraft
和IPAddress
两个网站对查询结果显示得颇为详细,推荐使用,当然可能绝大多数人还是倾向于IPAddress
。
2.2.1 站长之家(IP+地理位置)
2.2.2 ip.cn(IP+地理位置)
2.2.3 ip138(IP+地理位置)
2.2.4 ip.tongmengguo(IP+地理位置)
2.2.5 ip.chacuo(IP+经纬度+地图定位)
2.2.6 ip.yqie(IP+地理位置+地图定位)
2.2.7 netcraft(IP+地理位置+网站排名)
2.2.8 IPAddress(IP+地理位置+经纬度+地图定位+访问排名 推荐使用)
3、Python批量获取记事本中域名的IP地址和经纬度实例(利用IPAddress网站接口)
3.1 IPAddress网站分析(以baidu.com为例)
打开IPaddress网站后,键盘按F12
进入开发工具DevTools
窗口后点击NetWork
,然后在左侧网页搜索框中输入baidu.com
后会触发请求,在右侧可以看到,分析发现是Get
方式的简单请求,可以直接看到响应Response页面预览,如下图所示。
所以只需要根据url
地址https://websites.ipaddress.com/baidu.com获取响应Response
结果,然后在结果中解析即可得到页面数据。之后通过进一步分析查找发现只需要解析Domain Summary、IP Address and Server Location和Website and Web Server Information三个section
部分即可得到想要的结果。
3.1.1 Domain Summary
对应解析结果及在CSDN中显示:
<table class="panel-item table table-border-row table-v"><tbody><tr><th>Domain Name</th><td><a href="https://websites.ipaddress.com/tag/baidu">baidu</a></td></tr><tr><th>Global Traffic Rank</th><td>5</td></tr><tr><th>Estimated Visitors</th><td>185.4 Million / Day</td></tr><tr><th>Estimated Page Impressions</th><td>921.6 Million / Day</td></tr><tr><th>Domain Creation Date</th><td><time datetime="1999-10-11">October 11, 1999</time></td></tr><tr><th>Domain Age</th><td><time datetime="P8087D">22 years, 1 month and 20 days (8,087 days)</time></td></tr><tr><th>IP Addresses</th><td><ul class="comma-separated"><li>220.181.38.148</li><li>220.181.38.251</li></ul></td></tr><tr><th>Web Server Location</th><td>
Python根据域名批量获取IP地址和经纬度(2021.12.1)相关推荐
- python自动批量获取IP地址
本文主要是利用PYTHON批量获取指定IP的地址.运营商等归属地信息,使用的是淘宝IP库,支持IPV4和IPV6查询,比较方便. #!/usr/bin/env python # coding: utf ...
- 网络DNS域名转换成IP地址
网络DNS域名转换成IP地址(完整代码,测试通过) using System; using System.Collections.Generic; using System.Linq; using S ...
- python 解析域名_Python实现通过解析域名获取ip地址的方法分析
本文实例讲述了Python实现通过解析域名获取ip地址的方法.分享给大家供大家参考,具体如下: 从网上查找的一些资料,特此做个笔记 案例1: def getIP(domain): myaddr = s ...
- python获取域名对应的ip_09python实现DNS查找域名对应的IP地址
# DNS:是一个UDP层上边的协议,用于将域名转换成IP地址,在我们平时浏览网页的时候, # 这个我们平时用到的特别多的,在我们打开浏览器进行搜索网页的时候,不是填入IP地址进行 # 搜索的,而只是 ...
- gethostbyname()函数:通过域名获取IP地址
客户端中直接使用 IP 地址会有很大的弊端,一旦 IP 地址变化(IP 地址会经常变动),客户端软件就会出现错误. 而使用域名会方便很多,注册后的域名只要每年续费就永远属于自己的,更换 IP 地址时修 ...
- linux下载python的地址_Linux下Python获取IP地址的代码
<lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...
- python地址多少位_Python获取IP地址对应的地理位置信息!
在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料 原理简介 利用了三个可以查询ip地址对应归属地的网站 ...
- 移远EC20 Ping指令,用域名获取IP 地址
移远EC20 Ping指令 AT+QPING=<contextID>,<host> <contextID> 整型.场景ID.范围:1~15. <host> ...
- 根据域名获取ip地址、端口、服务器类型和标题
这个是我在一家网络安全公司面试时的操作题,回来后经过多次修改后才得到一个比较完整的程序. 整个模块可以分成两个大部分.一个是数据库的操作,一个是信息的获取(类似爬虫?) 信息的获取分为四个小操作,ip ...
最新文章
- 浅谈边缘计算对企业安全建设的影响及趋势
- CSS 学习路线(一)元素
- 算法一看就懂之「 递归 」
- SparkStreaming窗口入门
- C++ msdn 离线版下载地址
- 苹果电脑怎么安装计算机一级,苹果系统安装教程,详细教您苹果电脑怎么重装系统...
- Linux-脚本、tailf
- retrofit简单的网络请求
- 新知实验室基于腾讯云实时音视频WEB端实验
- 软件测试技术学习总结
- 现在更新鸿蒙会成为小白鼠吗,猫和老鼠鸿蒙版下载-猫和老鼠网易官方手游鸿蒙版 v7.8.4-114手机乐园...
- vitamin_baidu
- Mac与远程服务器数据交互软件Cyberduck
- cad直线和圆弧倒角不相切_CAD圆角、倒角分不清?详细讲解CAD圆角与倒角对象的区别和技巧...
- 如何修改本地hosts文件
- Python编辑器UliPad安装
- 可修改UID的白卡,请问为什么一般读写器不能修改这种卡的UID,必须要特定的读写器才能修改?
- http://www.dewen.net.cn/q/15051/C++ 整形和浮点数相除的精度问题
- PS186:你给我翻译翻译什么叫做惊喜
- 面向游戏玩家的六款最佳Linux发行版
热门文章