我一直在研究这个项目。我发现有很多免费的数据库可以在IP编号(IP地址的操作类型)与长期和纬度的坐标之间进行映射。但是,这些数据库的准确性确实很糟糕。
我尝试在某些数据库之间进行合并,并在答案中找到最常见的答案或“平均”。
这确实提高了我的准确性,但没有我预期的那么多。
我有另一个想法 - 使用Traceroute命令找出这个目标的路径,并根据路上的跳跃来确定我的目标在哪里。
我正在寻找新的想法,或某种有助于找出位置的协议。我一直在考虑公共cookie,但这可能过于侵入。此外,一位朋友告诉我,SNMP协议可能对我有所帮助,但实施起来非常复杂。
我的目标是憎恨这台电脑在哪个城市。这是我的目标。
感谢和抱歉我的英语!
答案 0 :(得分:1)
您可以使用HTML5的新地理位置。示例:http://html5demos.com/geo
(取自上面的链接)
代码:
<script>
function success(position) {
var s = document.querySelector('#status');
if (s.className == 'success') {
// not sure why we're hitting this twice in FF, I think it's to do with a cached result coming back
return;
}
s.innerHTML = "found you!";
s.className = 'success';
var mapcanvas = document.createElement('div');
mapcanvas.id = 'mapcanvas';
mapcanvas.style.height = '400px';
mapcanvas.style.width = '560px';
document.querySelector('article').appendChild(mapcanvas);
var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeControl: false,
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("mapcanvas"), myOptions);
var marker = new google.maps.Marker({
position: latlng,
map: map,
title:"You are here!"
});
}
function error(msg) {
var s = document.querySelector('#status');
s.innerHTML = typeof msg == 'string' ? msg : "failed";
s.className = 'fail';
// console.log(arguments);
}
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error);
} else {
error('not supported');
}
</script>
至于数据库,我一直走在那条路上,没有一个完美的解决方案,所有数据库只会给你大约50英里的准确度。
通过这种方式,您可以使用Ajax将位置数据推送到服务器。
答案 1 :(得分:1)
无法可靠地工作。例如,采取以下方案:
我公司有VPN。
有了这个,我可以从我的公司获得一个IP地址而无需亲自到场。
我在哪里?在我公司的地方?或者在世界的另一边,我度过假期?
我与我的提供商有拨号连接。
我在哪里?在拨入节点所在的位置,或者我真正在哪里?
这两个例子表明,IP地址本身并不包含(也不能容纳)任何地理信息。它可以与经验相关 - 用户将他们的(动态?)IP地址输入数据库,与他们当前的IP地址相关,但就是这样。所以说,系统固有的不可能是精确的。
如果您查找通过ADSL和动态IP地址上线的“普通用户”,您不知道提供商从同一个池中获取地址的区域有多大。在我断开连接后,接下来获取此IP地址的用户可能距离我50公里,500公里甚至2000公里(取决于您所居住的国家/地区)。
即使分配给业务客户的固定IP也可能会改变其位置:业务移动,或者它不再存在,并且IP地址被分配给完全不同的客户。
随着IPv6变得越来越流行,所有这些东西将在未来几个月/几年内再次发生变化。