18

我现在住在旅馆里,我想看看我的外部 IP 地址是什么。我访问了一个可以帮助解决此问题的通用网站,它报告我的地址为...(为隐私起见,省略了最后几位数字)

您的 IP 地址是:69.165.XXX.XXX

检测到本地网络 IP:10.1.XXX.XXX

检测到可能的代理:1.1 localhost:3128 (squid/2.7.STABLE9)

网络 IP 确实是正确的值。这让我很困惑,因为我认为任何浏览器都不会分享这些信息。我的猜测是 Squid 正在重写请求标头。无论如何,这是一个有点麻烦的隐私问题。

4

2 回答 2

21

它使用 WebRTC 方法来收集您的本地 IP:

Firefox 和 Chrome 已经实现了 WebRTC,允许向 STUN 服务器发出请求,这些请求将为用户返回本地和公共 IP 地址。这些请求结果可用于 javascript,因此您现在可以在 javascript 中获取用户的本地和公共 IP 地址。

来源:https
://github.com/vitalets/webrtc-ips PoC:https ://vitalets.github.io/webrtc-ips/demo/

08/2019 更新:目前 PoC 不能完全工作,因为Chrome 添加了mDNS支持以增加匿名性

于 2018-04-17T07:52:01.530 回答
-4

当您浏览网页(例如 whatismyip.com)时,您的计算机会将您的 IP 地址通知服务器,以便服务器可以将您请求的网页的 HTML、图形和其他元素发回给您。

考虑以下服务器变量(C# 代码):

string server = Request.ServerVariables["SERVER_NAME"]; 
string url = Request.ServerVariables["URL"]; 
querystring = Request.ServerVariables["QUERY_STRING"]; 
string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ipAddress == null || ipAddress == "")
{
    ipAddress = Request.ServerVariables["REMOTE_ADDR"];
}

以下是其他一些变量:

"HTTP_X_COMING_FROM"
"HTTP_X_FORWARDED_FOR" 
"HTTP_X_FORWARDED" 
"HTTP_X_REAL_IP" 
"HTTP_VIA" 
"HTTP_COMING_FROM" 
"HTTP_FORWARDED_FOR" 
"HTTP_FORWARDED" 
"HTTP_FROM" 
"HTTP_PROXY_CONNECTION" 
"CLIENT_IP" 
"FORWARDED"
于 2012-10-04T13:09:15.233 回答