【问题标题】:JavaScript to get Client IP Address bypassing Browser Extensions绕过浏览器扩展获取客户端 IP 地址的 JavaScript
【发布时间】:2021-07-28 01:58:37
【问题描述】:

我正在使用外部 API,API 的部分参数是 IP 地址。我查了一下怎么做,我在这个answer 中使用了ipify 版本,因为它没有限制。这是脚本:

$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
  console.log(data); 
  console.log(data.ip.toString()); 

  retrieved_entity_ip = data.ip.toString();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

它运行良好,直到一些客户端显示错误,根据日志,这是因为他们的 IP 地址丢失。我将范围缩小到他们的浏览器扩展程序uBlock Origin,它阻止了脚本运行。

有没有更可靠的方法来做到这一点而无需升级到付费层?

【问题讨论】:

  • 您的 API 将 IP 视为凭据?
  • @GuerricP。是的。它在他们的documentation 中,所以我相信我也可以分享它。
  • 有趣。我不明白目的是什么,以及他们如何验证这个地址。
  • 在这种情况下,如果客户端无法连接到您的外部服务,我建议您抛出错误,并显示一条消息告诉他们禁用其网络阻止扩展。
  • 您可以托管自己的 ipify 服务器。 ipify 被列入黑名单github.com/rdegges/ipify-api/issues/18。你可能会在雷达下飞行

标签: javascript html google-chrome-extension ip-address browser-extension


【解决方案1】:

您可以通过广告拦截器使用not blacklisted 的公共服务,例如https://www.myexternalip.com/json,但最终它也可能被列入黑名单,这不受您的控制。

降低使用可能被列入黑名单的服务的风险的最可靠方法是按照描述中的建议构建您自己的服务器,或者在请求失败的情况下保持更新的替代服务列表。可能你不花点钱就无法摆脱你的“问题”。

【讨论】:

  • 这有什么限制吗?一天大概有 400 个请求?
  • @ProsyArceno 根据服务,“如果超过 30 个请求/分钟的速率限制,您将收到状态码 429”。这是按 IP 计算的,因此由于您的脚本位于客户端,因此我不会担心这一点,除非您在 Internet 网关后面有很多用户。
  • 没关系。我现在就用这个​​谢谢
猜你喜欢
  • 1970-01-01
  • 2018-11-24
  • 2012-05-03
  • 2020-04-02
  • 2019-01-14
  • 2011-07-22
  • 2019-11-13
  • 1970-01-01
相关资源
最近更新 更多