Как предотвратить выполнение некоторого кода JS в сети с IP-адресов / местоположений моего рабочего места? - PullRequest
3 голосов
/ 12 июня 2019

У меня есть некоторый код JS на веб-странице, которая выполняется и отправляет некоторые данные, собранные, когда определенные события (такие как изменение страниц) сделаны. Я хотел бы исключить все (или почти все) устройства на своем рабочем месте для выполнения этой функции, чтобы не собирать данные, сделанные в работе (99% из них - тестовые данные и мусор).

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

Мне бы не хотелось, чтобы на веб-странице отображалось всплывающее окно с запросом разрешения на геолокацию, поэтому я предпочитаю использовать местоположение IP, но я не знаю, как именно это работает (если у меня есть IP, что дальше?) , Я видел некоторые сервисы, но большинство из них очень ограничены в количестве запросов, сделанных в час / день.

Спасибо и всего наилучшего.

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Чтобы найти местоположение пользователя на основе ip, вам необходимо использовать внешние сервисы, такие как http://ip -api.com / , https://ipinfo.io или https://geoip -db.com .

Вот простая функция js для указания в консоли местоположения и страны пользователя.

function ipLookUp () {
  $.ajax('http://ip-api.com/json')
  .then(
      function success(response) {
          console.log('User\'s Location Data is ', response);
          console.log('User\'s Country', response.country);

      },

      function fail(data, status) {
          console.log('Request failed.  Returned status of',
                      status);
      }
  );
}
ipLookUp()

Дополнительная информация: Как определить местоположение посетителя вашего сайтаИспользование JavaScript .

1 голос
/ 02 июля 2019

Я недавно обнаружил Ipregistry (https://ipregistry.co) для того же варианта использования, что и у вас. Вот фрагмент кода, который позволяет фильтровать по IP-адресу с использованием стандартного fetch API:

var companyIpAddresses = ['1.2.3.4', '2a01:e35:2f23:e3d0::1', '2.3.4.5'];

fetch('https://api.ipregistry.co/?key=tryout')
    .then(function (response) { return response.json(); })
    .then(function (payload) {
        var userIp = payload['ip'];
        if (companyIpAddresses.includes(userIp)) {
            // User is not allowed
        } else {
            // User is allowed
        }
    });

Если ваша организация имеет свою собственную автономную систему (AS), вы можете фильтровать ее по ASN, используя поле payload['connection']['asn']. Однако использование геолокации IP для выполнения упомянутой вами фильтрации не будет достаточно точным. Это относится к любой услуге, которую вы используете.

0 голосов
/ 12 июня 2019

Если вы имеете в виду работу как в «других разработчиках», почему бы не определить две среды (как в Angular со средой prod).

  • Когда вы публикуете свою веб-страницу, вы можете опубликовать ее с помощью продукта. среда с флагом sendDiagnostics, установленным на true.
  • Когда вы разрабатываете, вы используете среду по умолчанию с sendDiagnostics, установленным на false.

Чтобы ответить на ваш вопрос:

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

...