javascript - 绕过浏览器扩展获取客户端 IP 地址的 JavaScript
问题描述
我正在使用外部 API,API 的部分参数是 IP 地址。我查了怎么做,我在这个答案中使用了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,它阻止了脚本运行。
有没有更可靠的方法可以做到这一点而无需升级到付费层?
解决方案
您可以使用未被广告拦截器列入黑名单的公共服务,例如https://www.myexternalip.com/json,但最终它也可以被列入黑名单,这不受您的控制。
降低使用可能被列入黑名单的服务的风险的最可靠方法是按照描述中的建议构建您自己的服务器,或者在请求失败的情况下保留更新的替代服务列表。可能你不花一些钱就不会摆脱你的“问题”。
推荐阅读
- html - 动作不适用于 React 应用程序中的自适应卡
- shell - 如何在jmeter中添加多个命令
- reactjs - 我可以同时使用 Shopify Polaris 和 React 吗?
- google-sheets - 使用 AverageIFS 函数时出错
- spring-boot - 如何从 Spring Boot 应用程序中的休息控制器触发石英作业?
- python - 如何在不使用人脸检测的情况下使用dlib人脸识别功能?
- linux - 在linux上,如何获取进程调用的对象或地址?
- java - 使用 Java SDK 在 Hyperledger Fabric 中运行多个 VM
- spring-boot - 使用 Spring Boot 将 RESTful API 添加到在 Tomcat 上运行的现有 Web 应用程序
- rascal - 在 Eclipse 大纲中对语法进行分类