前端可以拿到一个请求的 ip 地址吗?

2022-05-18 11:13:50 +08:00
 lankunblue

浏览器只暴露了 http 层给用户,ip 是 tcp 层的东西,不太清楚有没有 hack 可以拿到一个请求的服务器 ip 地址,不管是通过插件、普通的网页 js 甚至 wasm

4368 次点击
所在节点    程序员
30 条回复
Newb1e
2022-05-18 17:04:54 +08:00
f12 network
lankunblue
2022-05-18 17:10:36 +08:00
@Newb1e 对对对,其实就是 f12 network 里请求面板的那个 remote address, 但是我想知道可不可以通过代码拿到这个
thinkershare
2022-05-18 17:11:15 +08:00
@lankunblue 没有, 不用折腾了, 不使用网络工具或者自己封装浏览器就不要指望了. IP 这个层次的信息在传输层, HTTP 这种应用层不要指望了, MDN 上的关于网络有关的 API 就没有这种层面的公开 API. 同意 @rekulas 的观点, 这是个伪需求, 对于 WEB 层面的应用.
thinkershare
2022-05-18 17:13:29 +08:00
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/dns/resolve, 你需要的是这个, 但是这个 API 已经被删除了
thinkershare
2022-05-18 17:14:42 +08:00
如果可以, 这将被视为一个安全漏洞, 很快被浏览器厂商修复!
lankunblue
2022-05-18 17:16:57 +08:00
@thinkershare 嗯嗯,另外我其实还有一个问题,按照网络协议来说,http 层是 ip 层的上层协议,为啥确不能访问到底层协议的协议头呢?
rekulas
2022-05-18 17:21:23 +08:00
@lankunblue 做过编程的都知道,计算机体系里都是越底层接触的越多,越上层越少
Hyseen
2022-05-19 01:26:22 +08:00
@lankunblue 你的这个问题就是错的,应用层当然是可以获取到底层协议的内容的,否则 nginx 的 $remote_addr 是怎么获取的?你在浏览器中没办法拿到只是浏览器提供的 API 对用户屏蔽了底层协议而已,你自己实现一个浏览器的话提供一个获取请求的 TCP 连接的对端 IP 的 API 是完全可行的
nothingistrue
2022-05-19 09:48:45 +08:00
你这个需求,源需求是当前服务器( A 域名),想通过访问它的某个页面的浏览器,去获取 浏览器到 B 域名 之间的通讯信息。这特么就是网络攻击,不是无法实现,而是不能实现。
lankunblue
2022-05-19 10:23:05 +08:00
@Hyseen 确实如此,学习了,感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/853644

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX