推荐关注
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 · 6002 views
    This topic created in 2096 days ago, the information mentioned may be changed or developed.

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

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

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

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

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