如何防止从我的工作场所 IPs/locations 在 Web 中执行某些 JS 代码?

How to prevent executing some JS code in web from my workplace IPs/locations?

我在网页中有一些 JS 代码被执行并发送一些在某些事件(例如更改页面)完成时收集的数据。我想排除我工作场所的所有(或几乎所有)设备来执行此功能,以免收集工作中产生的数据(其中 99% 是测试数据和垃圾)。

我的想法是使用地理定位或 IP 来排除此设备(或此位置)执行 JS 功能,但我不知道该怎么做。

我不希望网页显示请求地理定位许可的弹出窗口,所以我更喜欢使用 IP 定位,但我不知道它是如何工作的(一旦我有了 IP,下一步是什么?)。我看过一些服务,但其中大多数服务的请求数量非常有限 hour/day。

谢谢你,并致以最诚挚的问候。

如果您的意思是像 "other developers" 中那样工作,为什么不定义两个环境(如 Angular 中的 prod 环境)。

  • 当您发布您的网页时,您可以使用产品发布它 标志 sendDiagnostics 设置为 true.
  • 的环境
  • 开发时使用默认环境 sendDiagnostics 设置为 false

回答你的问题:

如果不使用外部服务(高效),则无法获取 IP 地址位置。这些服务只是将 IP 映射到位置并保留这些位置的数据库。如果您不想手动执行此操作,则需要使用其中一项服务。

要根据 ip 查找用户位置,您需要使用外部服务,例如 http://ip-api.com/, https://ipinfo.io or 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()

更多信息:How To Detect The Location of Your Website’s Visitor Using JavaScript

我最近发现了 Ipregistry (https://ipregistry.co) for a similar use case as you. Here is a code snippet that allows filtering by IP address using the standard 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),您可以使用字段 payload['connection']['asn'] 根据其 ASN 进行过滤。但是,使用 IP 地理定位来执行您提到的那种过滤将不够准确。这适用于您使用的任何服务。