推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
gakuen

JS 在不使用 API 的情况下,有办法获取域名对应 IP 吗?

  •  
  •   gakuen · Aug 18, 2020 · 6575 views
    This topic created in 2269 days ago, the information mentioned may be changed or developed.

    在浏览器前端 JS,不使用 API 情况下,有没有办法获取域名解析的 IP 。

    或者有没有什么浏览器插件可以?而且能在页面里调用的。

    27 replies  •  2020-08-28 00:06:13 +08:00
    maocat
    maocat
    Aug 18, 2020
    1
    让后端在响应头加上 ip
    gakuen
    gakuen
    OP
    Aug 18, 2020
    2
    @maocat 假设我要获取不定的域名 IP,后端不可控的情况下。
    w3cfed
    w3cfed
    Aug 18, 2020
    3
    @gakuen Node.js
    whypool
    whypool
    Aug 18, 2020
    4
    不能
    mokeyjay
    mokeyjay
    Aug 18, 2020
    5
    原生 JS 不行
    如果是浏览器扩展的话,那可以,毕竟扩展可以跨域
    maichael
    maichael
    Aug 18, 2020
    6
    你调后端,让后端去调 DNS 不就好了。
    ik
    ik
    Aug 18, 2020 via iPhone
    7
    需求是: 从前端直接获取到访问的 cdn 节点 ip?
    gakuen
    gakuen
    OP
    Aug 18, 2020
    8
    @maichael 就是不希望调用 API 或后端
    gakuen
    gakuen
    OP
    Aug 18, 2020
    9
    @ik 是,大概就能获取 ping 或 nslookup 那样的结果就行,不需要真实 IP
    shenyu1996
    shenyu1996
    Aug 18, 2020
    10
    不能吧 js 在客户端运行,要获取服务器信息 理论上不行
    maichael
    maichael
    Aug 18, 2020
    11
    @gakuen 浏览器环境下做不到
    masker
    masker
    Aug 18, 2020 via Android
    12
    术业有专攻。 请用相应的工具做相应的事。
    再者,请 Google 。
    vicsun2020
    vicsun2020
    Aug 18, 2020 via iPhone
    13
    不请求无解啊,至少需要问 dns 吧
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Aug 18, 2020 via iPhone
    14
    不能
    shakaraka
    shakaraka
    Aug 18, 2020
    15
    用 DNS over HTTPs 就行

    ```js
    await fetch('https://dns.alidns.com/resolve?name=www.taobao.com.&type=1')
    ```
    zsdroid
    zsdroid
    Aug 18, 2020
    16
    你以为 js 是万能的?
    sunjourney
    sunjourney
    Aug 18, 2020
    17
    为什么后端不可控,就是要让后端可控啊
    JustSong
    JustSong
    Aug 18, 2020 via Android
    18
    你还是直接说你要拿来干嘛吧
    chinvo
    chinvo
    Aug 18, 2020 via iPhone
    20
    如果要知道后端去了哪个 CDN 节点,建议在 CDN 上返回 via 头
    cydian
    cydian
    Aug 19, 2020❤️1
    21
    @wunonglin 这样还是通过阿里的服务器获取 IP 了
    楼主想要获取本机解析的 IP,对于同一域名不同地域解析不同的 IP 的时候,这个方法就不行。

    回答楼主问题:
    1.不改变后端,不改变浏览器安全设置,不使用扩展,答案:不能
    2.后端或者 CDN 头部配合,头部添加响应 IP,即可拿到本机解析的 IP
    3.使用 15 楼的方案,无需改变后端,但同一域名解析多个 IP 无解
    4.使用浏览器扩展,用户上手难,不建议,但使用浏览器扩展可玩性极高
    cydian
    cydian
    Aug 19, 2020
    22
    19 楼的方案
    dns.resolve() 兼容性问题
    lein
    lein
    Aug 19, 2020❤️1
    23
    需要更底层的协议和接口,JS 里面的 XMLHttpRequest 肯定是不行了,试试去 WebRTC 里面找找能不能有解决方案。
    tydl
    tydl
    Aug 19, 2020
    24
    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
    <script type="text/javascript">
    document.write(returnCitySN["cip"]+','+returnCitySN["cname"])
    </script>
    tydl
    tydl
    Aug 19, 2020
    25
    @tydl 这是使用接口 api 了吧?
    shenyuzhi
    shenyuzhi
    Aug 19, 2020 via iPhone
    26
    浏览器没有给 js 提供这种 api,只能调第三方接口。
    u823tg
    u823tg
    Aug 28, 2020
    27
    浏览器环境下无解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1364 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 20:54 · PVG 04:54 · LAX 12:54 · JFK 15:54
    ♥ Do have faith in what you're doing.