簡體   English   中英

如何防止從我的工作場所IP /位置在Web中執行某些JS代碼?

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

我在執行的網頁中有一些JS代碼,並在完成某些事件(例如更改頁面)時發送一些收集的數據。 我想排除我工作場所中的所有(或幾乎所有)設備來執行此功能,以便不收集工作中的數據(其中99%是測試數據和垃圾)。

我的想法是使用地理位置或IP來排除這些設備(或這個位置)執行JS函數,但我不知道我應該怎么做。

我不希望網頁顯示一個彈出窗口,詢問地理位置的權限,所以我更喜歡使用IP位置,但我不知道它是如何工作的(一旦我有IP,下一步是什么?)。 我已經看到了一些服務,但大多數服務的請求數量非常有限。

感謝你並致以真誠的問候。

要查找基於IP的用戶位置,你需要使用外部服務,如http://ip-api.com/https://ipinfo.iohttps://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檢測網站訪問者的位置

我最近發現了Ipregistry( https://ipregistry.co )和你一樣的用例。 以下是一個代碼段,允許使用標准fetch API按IP地址進行過濾:

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地理定位來執行您提到的那種過濾將不夠准確。 這適用於您使用的任何服務。

如果你的意思是“其他開發人員”的工作,為什么不定義兩個環境(比如在Angular中使用prod環境)。

  • 發布網頁時,您可以使用標記sendDiagnostics設置為true的prod環境發布它。
  • 在開發時,使用sendDiagnostics設置為false的默認環境。

回答你的問題:

如果不使用外部服務(有效地),則無法獲取IP地址。 這些服務只是將IP映射到位置並保留后面的數據庫。 如果您不想手動執行此操作,則需要使用其中一種服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM