繁体   English   中英

用户 IP 和用户代理

[英]User IP and useragent

我正在通过第三方 API 构建网络应用程序,他们要求我为每次调用传递用户 IP 和用户代理。

我更喜欢 javascript(我正在使用 Angular)或 php,因为我正在使用 curl 来处理请求。 我可以为此找到第 3 方脚本,但仅适用于用户 IP 而不是用户代理。 我更喜欢两者都能减少呼叫次数的方法。

任何人都可以帮助处理这个脚本或网站吗?

在 PHP 中:

<?php
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    $ip = $_SERVER['REMOTE_ADDR'];
?>

我真的不知道 PHP,这只是谷歌搜索你的问题的结果。 请先尝试做一些研究!

在JS中:

var userAgent = window.navigator.userAgent;
var req = new XMLHttpRequest();
req.onload = function() {
  var ip = JSON.parse(req.response).ip;
  //Use ip asynchronously here
};
req.open("GET", "https://api.ipify.org/?format=json");
req.send();

除非您滥用 WebRTC 中的安全漏洞或查询第三方服务,否则无法在 JS 中获取 IP,如此处所示。 重要的是要知道ip不存在于req.onload之外,因此在请求响应之前不能使用。

如果您可以访问 ES7(不太可能,但为了完整起见我将其包括在内),您可以使用它来获取用户的 IP:

(async () => {
  var ip = (await fetch("https://api.ipify.org/?format=json").then(r => r.json())).ip;
  //use ip
})();

哪个更短更有趣。


附带说明一下,在客户端获取用户 IP 的需求并不大,因为您在 JS 中发出的任何请求都将来自该客户端 这意味着任何接收该请求的服务器都能够在本机看到 IP,而无需像这样的黑客攻击。

如果客户端发出请求,我不确定为什么第三方 API 要求您传递客户端 IP - 听起来像是一个糟糕的 API。

这一切意味着什么? 你的用户代理的每一位都表明了你系统的一些特殊之处。

没有编写用户代理字符串的“标准”方式,因此不同的网络浏览器使用不同的格式(有些截然不同),并且许多网络浏览器将大量信息塞入其用户代理中。 这就是 WhatIsMyBrowser.com 介入的地方 - 我们解码您的用户代理字符串以找出它所说的一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM