`
RamosLi
  • 浏览: 120036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

搭建自己的IP地址库

阅读更多

先介绍下背景:我负责微爱的后端,微爱是一款专给情侣使用的应用,官网地址:http://www.welove520.com 。


最近我想做这么一件事:分析用户的地域分布,比如北京多少人,四川多少人。现在有的数据是用户IP地址,所以首先需要根据IP地址查询用户所在省市,然后再统计分析。这个问题的关键是如何通过IP查询到用户所在地区。解决方案有俩:1. 搭建自己的IP 地址库,2. 使用其他网站提供的IP查询API。 最后我选择了方案1,下面把详细方法分享出来,互联网的精神就在于共享,希望此举对其他人有用。


步骤:

1. 下载纯真IP地址数据库,据说这个是国内最准确的,百度一下就可以找到很多下载。下载后安装运行,如下图:


我的IP地址是117.79.229.18,查询出来是在江苏,其实我在北京,IP库不是特别准确,有误差,免费的就凑合用吧,不想花钱买收费的。

2. 点击解压,会生成一个txt文件,如下图:

每一行的含义是这样的,比如第10行,表示:IP地址在1.1.0.0---1.1.0.255之间的是福建电信的。

3. 将IP数据导入数据库,我的DB是mysql,系统Linux。
表结构是这样的:

 
其中 ip_segment_begin_long 和 ip_segment_end_long是将IP地址转换成long型后存入的,并且这两个字段联合为唯一键,这么做是为了查询更快。
数据导入我就不多说了,用mysql的load data即可。导完后有44万行数据。

4. 至此,自己的IP地址库算是有了。接下来就是查询了,我的sql语句如下:
select * from ip_address where ip_segment_begin_long <= ? and ip_segment_end_long >= ?
问号处是将IP地址转换成long型后的值。这样,我就可以根据IP查询用户所在地了!
 
0
3
分享到:
评论
4 楼 xingkong69663 2017-02-21  
推荐一个开源项目,https://github.com/wzhe06/ipdatabase,JAVA写的,二叉树搜索实现IP地址查询,使用2015年广告行业官方IP地址库,不用远程请求API,直接在本地批量快速查询IP地址。
3 楼 a8221423 2014-07-17  
我也用这个表结构, 也是这样定位, 但是很慢,定位100个用了10几秒。
我没建唯一键, 除了唯一键还有其他优化方法吗
2 楼 RamosLi 2012-09-25  
maxliz 写道
调用别人提供的webservice不是挺好的吗?

求靠谱的API推荐。。。
比如我要分析100万用户,调用别人的API速度可能就会慢很多,而且免费的API一般都有配额限制吧
1 楼 maxliz 2012-09-25  
调用别人提供的webservice不是挺好的吗?

相关推荐

    相当全的离线IP国内、全球IP地址区域解析库

    很全的IP离线地址库,使用代码解析: &lt;groupId&gt;net.ipip&lt;/groupId&gt; &lt;artifactId&gt;ipdb &lt;version&gt;1.1.1 调用代码: // City类可用于IPDB格式的IPv4免费库 City db = new City("C:\\Users\\Administrator\\...

    caozha-ip(IP地址库调用系统) v1.0.0.zip

    "caozha-ip"是一个IP地址库调用系统,版本为v1.0.0,它可能是一个用于处理和管理IP地址数据的软件工具。这个系统可能是由源代码构成,适用于学习、毕业设计论文、计算机案例研究以及模板建站等用途。通过分析其标签...

    c#设置本机ip地址

    通过编程方式动态修改 IP 地址可以应用于多种场景,如自动化测试环境搭建、网络设备管理等。本文将详细介绍如何使用 C# 编程语言来修改本地计算机的 IP 地址。 #### 技术背景 在 Windows 操作系统中,可以通过 Win...

    局域网搭建yum仓库,实现内网软件安装

    baseurl=http://仓库服务器IP地址/repo/centos/ enabled=1 gpgcheck=0 ``` 8. 测试安装:在内网服务器上运行`yum clean all`清理缓存,然后尝试`yum update`或`yum install`命令,看是否能正常从局域网仓库获取...

    详解基于Scrapy的IP代理池搭建

    1. 创建Scrapy项目,并定义items.py,用于定义代理IP的数据结构,包括代理类型(HTTP或HTTPS)、IP地址、端口、来源、使用次数等字段。 2. 编写爬虫(如kuai_proxy.py),设置起始URL为代理网站的IP列表页面,如快...

    获取IP(LV86)_ip地址_获取本机IP地址_

    本文将深入探讨“获取IP(LV86)_ip地址_获取本机IP地址_”这一LabVIEW程序所涉及的知识点,以及如何利用LabVIEW进行IP地址的获取。 首先,IP地址是一个32位的二进制数字,通常被分为四段,每段8位,用点分十进制表示...

    php168分类信息的IP库

    这个IP库可能包含了大量的IP地址,每个IP地址都可能与特定的地理位置、国家、地区等相关联,帮助网站进行访客定位、安全防护或者数据分析。 描述中的“赶紧下载吧”暗示了这是一个可供用户下载使用的资源,可能是...

    易语言源码取IP地址.7z

    这个库提供了许多与网络相关的函数,如“获取本机IP地址”等,用于获取本地计算机的IP信息。在易语言中,实现这一功能可能需要调用如下的步骤: 1. 引入网络库:在易语言程序中,你需要先引入“网络”库,这样就...

    G6FTP服务器搭建物理资源库的设计与管理

    1. **信息**:展示域的基本信息,包括用户活动、IP地址以及操作历史,便于监控和管理。 2. **日志和报告**:记录各种日志,如传输日志、带宽日志,帮助分析服务器的使用情况和性能。 3. **其他功能**:根据需求...

    teiid搭建及跨库查询

    接着进行软件的安装,包括解压缩文件、配置环境变量、添加管理员用户和普通用户、修改配置文件IP地址、配置jboss.xml文件,并启动服务。安装完成后,通过Web界面进行访问,并使用管理员账户登录。 在安装Teiid之后...

    2022年山东省职业院校技能大赛中职组“网络搭建与应用”赛题题库

    通过竞赛,检验参赛选手的计算机网络的拓扑规划能力、IP地址规划能力、综合布线的施工测试能力、设备配置与连接能力、网络安全管理与维护能力、服务器的搭建与调试能力、故障排除和验证能力、应用的接入与测试能力、...

    ip手机号码地址查询 v1.0

    但是,这也意味着数据的更新可能需要手动进行,即定期下载新的QQWry.Dat文件并替换旧的,以保持IP地址库的最新状态。 对于开发者来说,这个"仿ip138.com网站源码"提供了一个学习和参考的实例,可以帮助他们了解如何...

    asp.net实现根据ip查询出ip所在地(附带ip库)

    在给定的资源中,已经包含了一个ip库,这个库可能是CSV或文本格式,存储了IP地址范围和地理位置信息。 接下来,我们将分为以下几个步骤来实现功能: 1. **解析IP库**:导入ip库到程序中。由于没有具体文件格式的...

    仿(Ip138完美无错版)全本地数据 v1.0.zip

    "QQWry.Dat"是一种常见的IP地址与地理位置对应关系的数据库文件,它包含了全球范围内的IP地址段及其对应的国家、地区信息。这个文件对于IP查询服务至关重要,因为它是解析和返回IP地址信息的基础。需要注意的是,这...

    2023年江苏省职业院校技能大赛中职组“网络搭建与应用”赛题

    通过竞赛,检验参赛选手的计算机网络的拓扑规划能力、IP地址规划能力、综合布线的施工测试能力、设备配置与连接能力、网络安全管理与维护能力、服务器的搭建与调试能力、故障排除和验证能力、应用的接入与测试能力、...

    基于PHP的优能IP地址查询.zip

    【描述】"基于PHP的优能IP地址查询.zip"是一个压缩包,内含的代码或资源文件可能是用于搭建一个能够查询IP地址信息的Web应用。通过PHP,开发者可以实现从用户输入的IP地址中提取信息,进而获取该IP对应的位置、网络...

    开源软件库源码 软件应用源码 软件库app源码 软件库后端源码

    如果你正在寻找一个开源的应用源码和后端源码,那么小丫软件库是一个不错的选择。... 后台管理地址为:域名或IP地址/admin。登陆后,你可以根据自己的需求进行配置...修改为你自己的域名或IP地址,确保与你的后端搭建一致

    ping ip地址的小玩意

    “swing”标签则进一步强调了该程序使用Java Swing进行开发的事实,这表明用户界面是用Swing组件搭建的,可能包括输入IP地址的文本字段、执行ping操作的按钮,以及显示结果的标签或文本区域。 “JFrameDemo.java”...

Global site tag (gtag.js) - Google Analytics