我了解服务器可以找到我的 IP 地址、位置、浏览器信息和操作系统。关于操作系统...如果我运行的是 Linux,服务器是否可以找到我使用的 Linux 发行版?
答案1
很有可能。单击此处关联查看浏览器向 Web 服务器发送的内容。操作系统应列在第一个类别“用户代理”下
答案2
另一个很好的网站可以告诉你网站在访问你的系统时可以了解到哪些信息,它是BrowserSpy.dk; 这电子前沿基金会(EFF)Keltari 的回答中列出的网站使用了一些来自 BrowserSpy.dk 的代码。如果你点击浏览器在主页左侧的菜单上,您将看到有关浏览器的信息。当我使用 Ubuntu Linux 系统上的 Firefox 访问该页面时,我看到“Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/201001 Firefox/24.0)”
答案3
浏览器可能会将信息发送到以下几个地方:
User-Agent
HTTP 标头。它是 HTTP 规范的一部分,每个请求都有一个https://en.wikipedia.org/wiki/User_agent 。如您所见,有渲染引擎名称、浏览器版本和操作系统名称。使用“开发人员工具栏”或“firebug”查找浏览器发送的标头列表:https://stackoverflow.com/questions/4423061/view-http-headers-in-google-chromeJavaScript:JavaScript中有
Navigator
一个类,它提供操作系统名称和浏览器名称:http://www.w3schools.com/js/js_window_navigator.asp。有些网站可能会使用 JS 来检测此信息并将其发送回服务器。您可以使用简单的 JS 来检查alert(navigator.appName); alert(navigator.platform);
TCP/IP 堆栈指纹识别:不同的 TCP/IP 实现(WinSock 与 Berkley 套接字)和不同的操作系统版本具有略有不同的默认选项。可以使用一些启发式方法来检测操作系统系列。这是黑客风格的方法,很少使用:https://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting
现代 JavaScript 还可以通过地理定位 API 报告您的位置(如 GPS),但它总是询问您是否要将此信息提供给服务器:http://www.w3schools.com/html/html5_geolocation.asp
顺便说一句,服务器并不总是能够找到你的真实 IP。如果使用代理,代理可能将您的真实 IP 发送到服务器(使用X-Real-IP
或X-Forwarded-For
标头),但这不是必须的。如果您的路由器上配置了 NAT,您甚至可能没有公共 IP。在这种情况下,服务器只会知道您的路由器的公共 IP,并且整个办公室(几百人)可能都在一个公共 IP 下。