缘起

前段时间很常能看到xx原神大学的域名,有趣是有趣,但具体是怎么实现的倒真没去了解过。

今天看到群里有人问:

所以玩原神玩的为什么搜出来来会是中科大? 我在dns查询上面查出来地址是75.126.101.233,而且无法访问

好奇心驱使下,我展开了调查。

已知

访问中国科学技术大学.com会跳转到《原神》官方网站

玩原神玩的.com则是中国科学技术大学

推测

我首先能想到可行的方法有两个:

  • 重定向,访问网站的时候,服务器返回一个重定向的网址。
  • DNS解析的时候就解析到了中科大的网站,比如:
    SUBDOMAINTYPEVALUETTL, SEC
    @CNAMEustc.edu.cn86400

过程

  1. 我很自然地想到,跳转嘛,我把网速限制得慢点就能看到没跳转前的了。这可以用浏览器自带的开发者工具来做。但无果。

  2. 我用whois查了下这个域名,得到

    eu:~$ whois 玩原神玩的.com
    Domain Name: XN--8MR985EBA830AIYE.COM
    Registry Domain ID: 2822210486_DOMAIN_COM-VRSN
    ...
    
  3. 这时候我以为这里的XN--8MR985EBA830AIYE.COM会是突破口,但查了下才知道:这是使用了国际化域名,而XN--8MR985EBA830AIYE.COM玩原神玩的.comPunycode编码

  4. 【教程向】如何让 www.xx原神大学.com 跳转到你的学校的官网 - 哔哩哔哩,它这里是用的第一种。但我需要验证玩原神玩的.com也是用的方法。

  5. 尝试traceroute,没看出什么结果:

  6. 使用curl -I,结果如下

    eu:~$ curl -I 玩原神玩的.com
    HTTP/1.1 301 Moved Permanently
    Connection: close
    Connection: keep-alive
    Content-Type: text/html; charset=UTF-8
    Date: Thu, 04 Jan 2024 14:18:59 GMT
    Keep-Alive: timeout=4
    Location: http://ustc.edu.cn
    Proxy-Connection: keep-alive
    Server: nginx
    Strict-Transport-Security: max-age=0;
    
    eu:~$ curl -I 中国科学技术大学.com
    HTTP/1.1 302 Found
    Connection: close
    Connection: keep-alive
    Date: Thu, 04 Jan 2024 14:19:43 GMT
    Keep-Alive: timeout=4
    Location: https://ys.mihoyo.com/
    Proxy-Connection: keep-alive
    Server: namecheap-nginx
    X-Served-By: Namecheap URL Forward
    

    这里验证了我的猜想,两个域名都是用的第一种方法。

解答

现在就能回答一开始的问题了:

  1. 为什么访问玩原神玩的.com会变成中国科学技术大学?

    因为对玩原神玩的.com的所有请求都被重定向到了中国科学技术大学对应的网站服务器。

  2. 为什么dns查询上面查出来地址是75.126.101.233,而且无法访问?

    因为75.126.101.233玩原神玩的.com对应的ip,这个域名并没有自己对应的服务器,请求都被重定向掉了。而真正的中国科学技术大学的ip是202.141.176.6

总结

我之前以为自己已经了解其原理,所以没有多想。

但这次真正去了解后还是能收获些新知识的。比如国际化域名,Punycode编码等。

吐槽

  • 我一开始还以为中国科学技术大学.com是属于学校官方的,还以为是用到了什么黑科技才做到让它跳转到《原神》官方网站的。但现在看来,并不是。这让我有些失望。
  • 写这篇的时候我尝试让Copilot做自动补全,是能有些帮助,但还是不习惯,会有种自己的思路被带着走的感觉。我不喜欢这种感觉,于是关掉了。

参考