Networking 考虑到远程计算机的IP(无需付费),如何确定远程计算机的位置?
我做这个项目已经有一段时间了。我发现有很多免费的数据库在IP号码(IP地址的一种操作)和一个长的纬度坐标之间映射。然而,这些数据库的准确性确实很差 我尝试在一些数据库之间进行合并,以获得最佳频繁答案或答案中的“平均值” 这确实提高了我的准确性,但没有我预期的那么多 我有另一个想法-使用Traceroute命令找出到达该目标的路径,并根据途中的跳数确定目标的位置 我在寻找新的想法,或者某种协议来帮助确定位置。我一直在考虑公共cookie,但这可能太具侵入性了。此外,一位朋友告诉我SNMP协议可能对我有所帮助,但它的实现非常复杂 我的目标是确定这台计算机在哪个城市。这是accuray,我正在瞄准它Networking 考虑到远程计算机的IP(无需付费),如何确定远程计算机的位置?,networking,geolocation,ip,geocoding,geoip,Networking,Geolocation,Ip,Geocoding,Geoip,我做这个项目已经有一段时间了。我发现有很多免费的数据库在IP号码(IP地址的一种操作)和一个长的纬度坐标之间映射。然而,这些数据库的准确性确实很差 我尝试在一些数据库之间进行合并,以获得最佳频繁答案或答案中的“平均值” 这确实提高了我的准确性,但没有我预期的那么多 我有另一个想法-使用Traceroute命令找出到达该目标的路径,并根据途中的跳数确定目标的位置 我在寻找新的想法,或者某种协议来帮助确定位置。我一直在考虑公共cookie,但这可能太具侵入性了。此外,一位朋友告诉我SNMP协议可能对
谢谢,对不起我的英语 你可以使用HTML5的新地理定位。例如: (摘自上面的链接) 代码:
功能成功(职位){
var s=document.querySelector(“#status”);
如果(s.className=='success'){
//不确定为什么我们在FF中两次碰到这个,我认为这与缓存结果返回有关
返回;
}
s、 innerHTML=“找到你了!”;
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=新的google.maps.latlng(position.coords.latitude,position.coords.longitude);
变量myOptions={
缩放:15,
中心:拉特林,
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({
位置:latlng,
地图:地图,
标题:“你在这里!”
});
}
函数错误(msg){
var s=document.querySelector(“#status”);
s、 innerHTML=typeof msg=='string'?msg:“失败”;
s、 className='fail';
//log(参数);
}
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(成功,错误);
}否则{
错误('不支持');
}
至于数据库,我已经走了这条路,没有一个完美的解决方案,所有的数据库只能提供大约50英里的准确度
有了它,您可以使用Ajax将位置数据推送到服务器。它无法可靠地工作。例如,采取以下方案:
- 我的公司有一个VPN 有了这个,我可以从我的公司获得一个IP地址,而不需要亲自到场 我在哪里?在我公司的地方?还是在世界的另一边,我在那里度假
- 我与我的提供商有拨号连接 我在哪里?在拨入节点所在的位置,还是我真正所在的位置
随着IPv6越来越流行,所有这些东西在未来几个月/几年内将再次发生变化。你有没有研究过MaxMind(商业)的准确性,以及你的目标与之相比如何?@CharlesB-是的,我有研究过MaxMind。他们的免费数据库比商业数据库差得多。他们的付费服务真的很好,但我的目标是不用付费就能获得这些信息:)。我不是在寻找超精确的测定方法。我只想知道远程计算机在哪个城市。-这是一个很好的例子。但请注意,它仅适用于WIFI连接。我的房子里有局域网和无线网络。当我通过局域网连接时,它发现我在25英里外的另一个城市。但是,当我连接到我的Wifi时,它非常准确。我的解释是,谷歌一直在绘制世界各地的WIFI和接入点地图,根据你的信号强度,它可以确定你所在的位置。如果你最好解释一下:)它可以通过浏览器工作。HTML是客户端,基本上浏览器使用的方法是:“GPS、WLAN、基于AP的定位、IP定位”。这里还有更多:我不认为使用数据库会比25英里以外的地方获得更好的准确度。我知道我不会得到那样的准确度。这就是我寻找新想法的原因。这个HTML-5方法的问题是它也不准确。我已经用一些局域网的例子测试了它,结果很差。正如我之前所说,将此工具与WLAN结合使用是非常精确的,但我主要对LAN用户感兴趣。一个理论上的想法可能会导致精度不高,但可能会起作用,即让多台服务器连接到客户端,以确定每台服务器之间的延迟,并使用这些数据对客户端的位置进行三角测量。除此之外,我认为在没有访问互联网提供商信息的情况下,不可能确定位置。他们是唯一一个
<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>