提问人:Deve10per 提问时间:3/16/2018 最后编辑:Deve10per 更新时间:10/18/2023 访问量:7801
如何使用 WebRTC 获取用户的公网 IPv4 地址?
How to obtain user's public IPv4 address using WebRTC?
问:
我尝试了许多不同的代码,但所有这些代码都只返回了用户的本地IP地址。(例如 192.168.1.2)。
如何使用 WebRTC 获取用户的公共 IPv4 地址?(例如:104.200.21.83)
我知道这是可能的,因为即使我使用 VPN,网站也可以显示我泄露的公共 IPv4 地址。
答:
-1赞
P.S.
3/16/2018
#1
不要误会我的意思,但客户端(运行浏览器的地方)可能不知道他的公共 IP。我会以某种方式在互联网上的服务器上托管一个小 php,它打印 $_SERVER['REMOTE_ADDR'],从 JS 调用它,将地址收集回 JS 变量......听起来很脏!
编辑:错误的答案,不知何故,让提问用户错了。
评论
0赞
Deve10per
3/16/2018
嘿,亲爱的!你是对的,但我正在做一个关于网络安全的研究。WebRTC 帮助程序员获取用户的真实 IP 地址,即使他们使用 VPN。
0赞
P.S.
3/16/2018
可能我没有得到全部故事,但我不明白 natted IPv4 网络中的客户端计算机如何在不询问路由器的情况下收集路由器 WAN 接口的 IP 地址,或者像上面描述的示例一样从外部查询它。
0赞
Deve10per
3/16/2018
只需使用 VPN 和配置为使用 VPN 并启用 WebRTC 的浏览器尝试该网站......
3赞
John Ellmore
3/16/2018
#2
下面是一个流行的概念验证:
https://github.com/diafygi/webrtc-ips
对我来说,它只是发回了我的私人IP。您似乎可以通过更改服务器 IP 来解决这个问题:
https://github.com/diafygi/webrtc-ips/issues/33
您链接到的站点使用服务器地址,该地址按预期返回了我的公共地址。stun:stun.l.google.com:19302
评论
0赞
Deve10per
3/16/2018
即使我使用VPN浏览网站,该网站也可以显示我的真实IP地址(没有VPN)。如果它不能使用 WebRTC 来解决这个问题,那么它是如何做到的呢?
0赞
John Ellmore
3/16/2018
...这是使用 WebRTC。此概念验证利用了您链接的网站使用的相同漏洞。
0赞
Deve10per
3/16/2018
哇!我刚刚用你提到的那个替换了默认 URL!它有效!
0赞
Carsten
10/18/2023
#3
下面是一个小型 Powershell 示例,它提供了你想要的:Here a small Powershell sample that gives you want you want:
# get public IP via WebRTC-Protocol in Chrome-browser (even if VPN has another IP)
# [email protected]
$tmpFile = New-TemporaryFile
Start-Process -FilePath 'C:\Program Files\Google\Chrome\Application\chrome.exe' "--no-first-run --headless --disable-gpu --dump-dom https://www.expressvpn.com/webrtc-leak-test" -RedirectStandardOutput $tmpFile -wait
$result = Get-Content $tmpFile
Remove-Item $tmpFile -Force -ea 0
$ip = [regex]::Match($result, '(?ms)(?<=<th class="ip">).*?(?=</th>)').value
cls
write-host "Your public IP as reported by WebRTC: $ip" -f y
当然,如上所述,在后台执行 Chrome 并仅运行所需的 Java 函数会更明智。但我无法解决这个问题。
评论