Подтвердить что ты не робот

Найти местоположение пользователя с помощью jQuery/JS (без геолокации google go)?

Есть ли способ найти местоположение клиентов на веб-сайте, используя только jQuery. Например, если пользователь приходит на мой сайт, как я могу узнать, что их приблизительное местоположение просто использует jQuery. Например, если пользователь пришел из Сан-Франциско CA, у него будет некоторый идентификатор типа, чтобы сообщить мне, что пользователь пришел из Сан-Франциско. Я бы не нуждался в их точном расположении только в округе или общей области происхождения.

изменить: Как генерируется информация о http://flourishworks-webutils.appspot.com/req?

Спасибо

4b9b3361

Ответ 1

Чтобы получить IP-адрес и имя страны клиента в jQuery:

$.getJSON("http://freegeoip.net/json/", function(data) {
    var country_code = data.country_code;
    var country = data.country_name;
    var ip = data.ip;
    var time_zone = data.time_zone;
    var latitude = data.latitude;
    var longitude = data.longitude;

    alert("Country Code: " + country_code);
    alert("Country Name: " + country);
    alert("IP: " + ip); 
    alert("Time Zone: " + time_zone);
    alert("Latitude: " + latitude);
    alert("Longitude: " + longitude);   
});

$.get("http://freegeoip.net/json/", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#address").html("Location: " + response.city + ", " + response.region_name);
    $("#details").html(JSON.stringify(response, null, 4));
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h3>Client side IP geolocation using <a href="http://freegeoip.net">freegeoip.net</a></h3>

<hr/>
<div id="ip"></div>
<div id="address"></div>
<hr/>Full response: <pre id="details"></pre>

Ответ 2

Вы можете использовать веб-службу, поддерживающую JSONP, такую ​​как моя служба http://ipinfo.io. Он предоставит вам IP-адрес клиента, имя хоста, информацию о геолокации и владельца сети. Вот пример этого в действии с jQuery:

$.get("http://ipinfo.io", function(response) {
    $("#ip").html(response.ip);
    $("#address").html(response.city + ", " + response.region);
}, "jsonp");

Здесь представлен более подробный пример JSFiddle, который также выводит полную информацию об ответах, поэтому вы можете увидеть все доступные детали: http://jsfiddle.net/zK5FN/2/

Ответ 3

HTML5 Geolocation API позволяет получить пользовательскую широту/долготу с некоторым JavaScript (если браузер совместим, и если пользователь разрешает доступ к его/ее месту).

Затем вы можете обратный геокод местоположение, чтобы получить адрес, есть несколько свободных обратное геокодирование, кроме Google API.

Однако, если вам не нужно точное местоположение, и если вы хотите, чтобы все ваши пользователи воспользовались этой функцией (независимо от браузера), и если вы не хотите спрашивать их, разрешают ли они вашему сайту иметь свое местоположение, я бы рекомендовал использовать ваш IP-адрес пользователя, чтобы получить местоположение.

Ответ 4

**jQuery(document).ready(function($) {
    jQuery.getScript('http://www.geoplugin.net/javascript.gp', function()
{
    var country = geoplugin_countryName();
    var zone = geoplugin_region();
    var district = geoplugin_city();
    console.log("Your location is: " + country + ", " + zone + ", " + district);
});
});
<script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
    alert("Your location is: " + geoplugin_countryName() + ", " + geoplugin_region() + ", " + geoplugin_city());
});
</script>
/*--------------------------------detailed function list not necessarily to be included---------
function geoplugin_city() { return 'Dobroyd Point';}
function geoplugin_region() { return 'New South Wales';}
function geoplugin_regionCode() { return '02';}
function geoplugin_regionName() { return 'New South Wales';}
function geoplugin_areaCode() { return '0';}
function geoplugin_dmaCode() { return '0';}
function geoplugin_countryCode() { return 'AU';}
function geoplugin_countryName() { return 'Australia';}
function geoplugin_continentCode() { return 'OC';}
function geoplugin_latitude() { return '-33.873600';}
function geoplugin_longitude() { return '151.144699';}
function geoplugin_currencyCode() { return 'AUD';}
function geoplugin_currencySymbol() { return '&amp;#36;';}
function geoplugin_currencyConverter(amt, symbol) {
    if (!amt) { return false; }
    var converted = amt * 0.9587170632;
    if (converted &lt;0) { return false; }
    if (symbol === false) { return Math.round(converted * 100)/100; }
    else { return '&amp;#36;'+(Math.round(converted * 100)/100);}
    return false;
} 
*/
//----------------example-----------------------//
<html>
 <head>
  <script language="JavaScript" src="http://www.geoplugin.net/javascript.gp" type="text/javascript"></script>
 </head>
 <body>
  <script language="Javascript">
    document.write("Welcome to our visitors from "+geoplugin_city()+", "+geoplugin_countryName());
  </script>
 </body>
</html>

Ответ 5

Любая опция на стороне клиента не является хорошей идеей, потому что она предоставляется компьютером на основе беспроводных сетей. Уверен, что 90% пользователей настольных компьютеров не активировали эту функцию. Когда вы попадаете на сайт, который хочет ваше местоположение, вам нужно нажать кнопку, чтобы согласиться. Если они только что попали на ваш сайт, они сначала хотят знать, почему вам нужно их местоположение.

Хороший способ - показать им страницу, чтобы сообщить им, почему вам нужно их местоположение, и что вы никогда не будете использовать его для каких-либо других целей, кроме указанного, и местоположение не будет сохранено в вашей базе данных.

Если существует script, который работает на стороне сервера, то есть соединение от клиента к серверу. В этом случае Сервер должен знать IP-адрес. Существует трюк, который вы можете сделать, чтобы сначала получить IP-адрес.

Сделайте php script на вашем сервере, который вернет только IP-адрес. Поскольку jquery обрабатывается локально, при подключении к серверу будет раскрываться IP-адрес клиента. Для выполнения необходимых подключений потребуется некоторое дополнительное время, но вскоре IP-адрес будет доступен в jQuery.

Затем вы можете вызвать trough jquery внешним API, который предоставит вам информацию для этого конкретного IP-адреса. Либо вы покупаете базу данных IP и устанавливаете ее на свой веб-сервер, чтобы вы могли ее назвать, либо используете другой API. Вы можете проверить http://www.ipgp.net/ip-address-geolocation-api/

Ответ 6

Это возможно с https://ip-api.io API геолокации. Он предоставляет страну, город, почтовый индекс, координаты, сеть, ASN, часовой пояс. Например, с помощью jQuery:

$(document).ready( function() {
    $.getJSON("http://ip-api.io/api/json",
        function(data){
            console.log(data);
        }
    );
});

Также https://ip-api.io проверяет базы данных TOR, public proxy и spammer и также предоставляет эту информацию.

Пример ответа:

{
  "ip": "182.35.213.213",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "CA",
  "region_name": "California",
  "city": "San Francisco",
  "zip_code": "94107",
  "time_zone": "America/Los_Angeles",
  "latitude": 32.7697,
  "longitude": -102.3933,
  "suspicious_factors": {
    "is_proxy": true,
    "is_tor_node": true,
    "is_spam": true,
    "is_suspicious": true // true if any of other fields (is_proxy, is_tor_node, is_spam) is true
  }
}

Ответ 7

Я создал https://ipdata.co, чтобы обеспечить надежное решение этой проблемы, см. ниже скрипту, чтобы играть с ней. Он возвращает множество полезных данных, таких как: местоположение: страна (имя и код), регион, город и т.д., Электронная торговля - currency_code, символ валюты и часовой пояс.

$.get("https://api.ipdata.co", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#city").html(response.city + ", " + response.region);
    $("#response").html(JSON.stringify(response, null, 4));
}, "jsonp");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1><a href="#" onclick="location.href='https://ipdata.co'; return false;">ipdata.co</a> - IP geolocation API</h1>

<div id="ip"></div>
<div id="city"></div>
<pre id="response"></pre>