<script type="application/javascript">
function getip(json){
alert(json.ip); // alerts the ip address
}
</script>
<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>
我可以通过此代码获得用户IP ...
我想找到这个IP的位置。 我怎么能?
答案 0 :(得分:42)
您可以将收到的IP提交给在线地理定位服务,例如http://www.geoplugin.net/json.gp?ip=<your ip here>&jsoncallback=<suitable javascript function in your source>
,然后包括它返回的来源,该来源将运行您在jsoncallback
中使用地理定位信息指定的功能。
或者,您可能希望了解HTML5的地理定位功能 - 您可以在行动here中看到它的演示。这样做的好处是您不需要向外部服务器发出请求,但它可能不适用于不支持HTML5的浏览器。
答案 1 :(得分:26)
可在此处获取在MaxMind数据库上运行的免费开源社区运行geolocation ip服务: https://ipstack.com/
示例强>
https://api.ipstack.com/160.39.144.19
<强>限制强>
每月10,000次查询
答案 2 :(得分:9)
我想指出,如果您使用http://freegeoip.net/,则无需向其提供客户端位置的IP地址。试试这些:
但是,我无法通过AJAX调用检索信息,可能是因为某些跨源策略。显然他们不允许公众访问他们的系统。
答案 3 :(得分:7)
使用API将IP地址映射到位置非常容易。运行代码段以获取城市和广告输入框中IP的国家/地区。
$('.send').on('click', function(){
$.getJSON('https://ipapi.co/'+$('.ip').val()+'/json', function(data){
$('.city').text(data.city);
$('.country').text(data.country);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="ip" value="8.8.8.8">
<button class="send">Go</button>
<br><br>
<span class="city"></span>,
<span class="country"></span>
&#13;
答案 4 :(得分:6)
万一你无法完成上面的代码,这里有一个与jquery一起使用的简单方法:
$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
function (data) {
for (var i in data) {
document.write('data["i"] = ' + i + '<br/>');
}
}
);
答案 5 :(得分:3)
更好的方法是跳过&#34;中间人&#34; (IP)
jQuery.get("http://ipinfo.io", function(response) {
console.log(response.city);
}, "jsonp");
这为您提供 IP ,城市,国家/地区等
答案 6 :(得分:2)
以下链接中的任何一个都应该注意这一点:
http://ipinfodb.com/ip_location_api_json.php
这些链接提供了通过Javascript获取用户位置的教程。但是,他们通过API向外部数据服务这样做。如果您拥有极高流量的站点,您可能希望自己托管数据(或获得高级API服务)。要自己托管所有内容,您必须使用IP地理位置托管数据库,并使用ajax将用户位置提供给Javascript。如果这是您想要的方法,您可以在下面获得一个免费的IP信息数据库:
http://www.ipinfodb.com/ip_database.php
请注意,此方法需要定期更新数据库,以便在将ips跟踪到位置时保持准确。
答案 7 :(得分:2)
一个相当便宜的选择是使用ipdata.co API,每天最多1500个请求。
这个答案使用的“测试”API密钥非常有限,仅用于测试几个调用。 Signup用于您自己的免费API密钥,每天最多可获得1500个请求以进行开发。
$.get("https://api.ipdata.co?api-key=test", function (response) {
$("#ip").html("IP: " + response.ip);
$("#city").html(response.city + ", " + response.region);
$("#response").html(JSON.stringify(response, null, 4));
}, "jsonp");
<h1><a href="https://ipdata.co">ipdata.co</a> - IP geolocation API</h1>
<div id="ip"></div>
<div id="city"></div>
<pre id="response"></pre>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
查看小提琴
答案 8 :(得分:1)
您可以使用此Google服务free IP geolocation webservice
<强>更新强>
该链接已损坏,我在此处放置了包含@NickSweeting的其他链接:
你可以用json格式获取数据:
答案 9 :(得分:1)
你可以在获得api密钥后使用ipinfodb,你可以查询针对特定IP的位置,例如http://api.ipinfodb.com/v2/ip_query.php?key=" + apiKey + "&ip=" + ip + "&output=xml
,然后你可以从xml响应中提取位置
答案 10 :(得分:1)
$.getJSON('//freegeoip.net/json/?callback=?', function(data) {
console.log(JSON.stringify(data, null, 2));
});
答案 11 :(得分:0)
您需要一个包含IP地址和位置映射的数据库。或者您可以使用大量在线工具来实现此目的,例如:http://www.ipligence.com/geolocation
谷歌在关键词下搜索了大量结果:“IP位置”
答案 12 :(得分:0)
答案 13 :(得分:0)
我建议您使用this查找IP地址的位置。
它非常易于使用,查询速度高,延迟最小,并且每周都会更新大量数据库。除了付费计划外,它还有每月45000个请求的免费计划。
您首先需要在https://ipgeolocation.io/注册并选择所需的 计划。
然后登录并从仪表板复制API密钥。
现在使用此API密钥查找IP地址的位置,如下所示:
curl 'https://api.ipgeolocation.io/ipgeo?apiKey=API_KEY&ip=1.1.1.1'
您将收到如下的JSON响应:
{
"ip": "8.8.8.8",
"hostname": "google-public-dns-a.google.com",
"continent_code": "NA",
"continent_name": "North America",
"country_code2": "US",
"country_code3": "USA",
"country_name": "United States",
"country_capital": "Washington",
"state_prov": "California",
"district": "",
"city": "Mountain View",
"zipcode": "94043",
"latitude": "37.4229",
"longitude": "-122.085",
"is_eu": false,
"calling_code": "+1",
"country_tld": ".us",
"languages": "en-US,es-US,haw,fr",
"country_flag": "https://ipgeolocation.io/static/flags/us_64.png",
"isp": "Level 3 Communications",
"connection_type": "",
"organization": "Google Inc.",
"geoname_id": "5375480",
"currency": {
"code": "USD",
"name": "US Dollar",
"symbol": "$"
},
"time_zone": {
"name": "America/Los_Angeles",
"offset": -8,
"current_time": "2019-01-14 03:30:00.135-0800",
"current_time_unix": 1547465400.135,
"is_dst": false,
"dst_savings": 1
}
}
注意:此解决方案的一些附带好处,您还可以获取时区API和天文API。