使用Swift,Dig和CartoDB映射IP地址的地理位置

我们将在本文档中完成的工作是从Alexa.com获得排名前25位的站点,并对它们运行“ dig”命令,以便查询DNS名称服务器以获取有关站点的信息。 我们将特别寻找的是这些站点的注册IP地址,以便使用CartoDB对它们进行热映射。


为了挖掘排名前50位的Alexa网站,我们首先创建一个Xcode项目。 在Mac上,转到“应用程序”文件夹,然后打开Xcode。 在出现的开始菜单中,在左侧选择第二个选项“创建新的Xcode项目”。 现在,您可以选择为新项目选择模板。 因为我们将制作一个简单的命令行工具,所以在OS X和Application下,选择“命令行工具”选项,然后按“下一步”继续。 在“产品名称”下,随意命名。 确保在“语言”选项中选择“快速”,然后按“下一步”继续。 选择项目的保存位置,然后按“创建”。

现在,在您的main.swift文件中,键入以下代码:

 进口基金会 
func shell(args:String ...)-> Int32 {
让任务= NSTask()
task.launchPath =“ / usr / bin / env”
task.arguments = args
task.launch()
task.waitUntilExit()
返回任务状态
} //来自alexa.com/topsites/country/us的前50个站点
var sites = [“ google.com”,“ facebook.com”,“ youtube.com”,“ amazon.com”,“ yahoo.com”,“ wikipedia.org”,“ ebay.com”,
“ twitter.com”,“ reddit.com”,“ netflix.com”,“ linkedin.com”,“ craigslist.org”,“ live.com”,“ pinterest.com”,“ bing.com”,
“ imgur.com”,“ go.com”,“ chase.com”,“ instagram.com”,“ paypal.com”,“ diply.com”,“ cnn.com”,“ msn.com”,“ tumblr” .com”,“ bankofamerica.com”,“ walmart.com”,“ espn.go.com”,“ zillow.com”,“ wellsfargo.com”,“ t.co”,“ imdb.com”,“ nytimes” .com”,“ yelp.com”,“ blogspot.com”,“ weather.com”,“ apple.com”,“ office.com”,“ homedepot.com”,“ aol.com”,“ huffingtonpost.com” ”,“ target.com”,“ etsy.com”,“ comcast.net”,“ washingtonpost.com”,“ microsoft.com”,“ wordpress.com”,“ foxnews.com”,“ microsoftonline.com”, “ buzzfeed.com”,“ capitalone.com”] //站点中的每个元素都将获得“ dig + short”命令
用于网站{
shell(“ dig”,“ + short”,网站)
}

键入代码后,按Command + S保存文件,然后按Command + R运行程序。 在控制台中,您应该看到出现IP地址。 请注意,有远远超过50个IP地址。 这是可以预期的,因为大多数站点都有多个IP地址。

为了在CartoDB中轻松创建地图,请选择您从摘要代码中发现的所有IP地址,然后按Command + C进行复制。 现在,转到sheets.google.com,然后按“ +”以创建一个新的空白电子表格。 在单元格A1中,键入“ cartodb_id”,在B1中,键入“ IP地址”。 在B2中,按Command + V将所有IP地址粘贴到电子表格中。 在A2中,键入“ 1”,在A3中,键入“ 2”。 现在选择A2和A3,然后单击左下角的蓝色小方块,并将其向下拖动直到到达A145。 这将为每个IP地址自动分配递增的ID号。 将工作表命名为“挖掘数据”,然后离开Goog​​le表格。

现在,我们已经将IP地址保存到了Google电子表格中,我们可以轻松地使用Google云端硬盘将此数据作为数据集导入到CartoDB中。 确保您允许CartoDB弹出窗口。 登录到CartoDB,然后按绿色的“新数据集”按钮。 您会看到一个屏幕,该屏幕允许您上传数据文件,使用Dropbox,Box,Google Drive和其他各种存储平台。 选择“ Google云端硬盘”,然后按蓝色的“连接”按钮。 找到“ Dig Data”文件,然后按“ Choose”,然后按右下角的绿色“ Connect Dataset”按钮。

由于CartoDB已经集成了IP地理位置,因此我们不需要查找每个IP地址的纬度和经度-CartoDB会为我们完成此任务。 数据集完成与CartoDB的连接后,请按屏幕顶部的“地图视图”。

在屏幕的右侧,您将看到一个画笔图标,将鼠标悬停在该图标上时会显示“向导”。 按下此按钮,然后在“地图层”向导选择器中选择“热图”。 现在,您将看到热图,如下所示:

虽然这足以显示我们在美国服务器位置内的密度,但实际上并不能为我们提供更多信息。 看看旧金山地区和东海岸地区。 两者似乎都在那里有很多IP地址。 看起来两侧的数字可能大致相同。 返回地图图层向导选择器,然后选择“群集”。 现在,您将看到集群图,如下所示:

现在,查看集群图,我们可以发现,与旧金山湾区相比,东海岸的服务器数量甚至没有可比性。 其中,旧金山拥有58台服务器,而东海岸只有32台。


这篇文章并不是要进行突破性的研究,而只是让我踏入CartoDB的一种方式。

Interesting Posts