惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
腾讯CDC
Jina AI
Jina AI
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
小众软件
小众软件
M
MIT News - Artificial intelligence
MyScale Blog
MyScale Blog
D
Docker
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
月光博客
月光博客
L
LangChain Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
C
Check Point Blog
U
Unit 42
人人都是产品经理
人人都是产品经理

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
隐式转发——骚套路建站方案 | 竹林里有冰的博客
竹林里有冰 · 2023-03-26 · via 竹林里有冰的博客

其实很久以前就接触到了国内 DNS 解析服务商提供的这个「隐式 URL」 这种 “DNS 记录类型”了,但我域名没有备案,一直没有机会去体验。

DNSPOD 的解析面板中提供的记录类型DNSPOD 的解析面板中提供的记录类型

今天社团内某个同学在折腾自己博客的时候又用到了「隐式 URL」,于是就借此机会了解了一下相关内容。

DNSPOD 文档的描述如下

隐性转发:用的是 iframe 框架技术、非重定向技术,效果为浏览器地址栏输入 http://www.dnspod.cn 回车,打开网站内容是目标地址 http://cloud.tencent.com/ 的网站内容,但地址栏显示当前地址 http://www.dnspod.cn

也就是说,所谓「隐式 URL」,只不过是域名解析的服务商用他们的服务器去响应了访客的请求,并回应了一段使用了 iframe 的 html 。这段代码打开了一个大小为 100% 的窗口去请求了被“隐式代理”的站点。我这位同学域名是备案在阿里云下的,阿里云所使用的 html 代码如下:

<!doctype html><html><frameset rows="100%"><frame src="http://example.com"><noframes><a href="http://example.com">Click here</a></noframes></frameset></html>

在下图中,我通过更改 hosts 文件实现将百度的域名在本地被解析到 localhost,并使用 iframe 标签将 b 站嵌入到页面中。当然,这并不能说明什么事情,不过是我个人的恶趣味罢了。

exampleexample

http://example.com改为目标站点,我们完全可以摆脱国内云服务商,在自己的服务器上直接实现「隐式代理」的效果。

而这种方案,恰巧可以用于在境内机子上建站,尤其是针对未备案的域名。

碍于 Github Pages 在境内的访问体验并不好,所以直接把博客部署在 Github Pages 下一直都不是首选,因此很多人都会选择去购买一台境内的小鸡,带宽虽然不大,但跑个博客什么的其实没什么大问题,但备案就很麻烦了。

我们可以通过在 Github Pages(或者其他境外的服务器) 上挂一个 index.html ,html 中使用 iframe 嵌套一个部署在境内小鸡上的网页来规避掉备案的问题。而境内小鸡可以选用非标准端口去监听请求。

使用隐式转发使用隐式转发2.drawio.png2.drawio.png

这样带来的好处是访客只需要从境外的服务器上获取一个不到 1 KB 大小的 html ,随后的所有请求都是指向境内云服务器的,所以网页打开时的体验会得到改善。

隐式转发拥有以下优势:

  • 直接向境内的云服务器发送请求,速度会得到改善 (相比于直接部署在境外服务器上的方案)
  • 不怎么消耗境外服务器的流量 (相比于使用境外服务器反向代理的方案)
  • 浏览器的地址栏不会直接显示 ip 或端口号(相比于未备案使用境内服务器的非标准端口的方案)
  • 不需要备案(相比于备案后使用境内服务器的 80/443 端口的方案)

但也存在以下劣势:

  • 移动端设备访问时好像还是会展示 PC 端的界面(存疑
  • 现代浏览器访问时可能会有 strict-origin-when-cross-origin 的问题(一般好像是出现在 iframe 的 html 是 https 访问,而目标站点是 http 访问的情况?)
  • 一些古老的浏览器可能不支持 iframe (?
  • 访问目标站点的其他路径时,浏览器地址栏的显示的地址不会变

那么应某些群友的要求,本文的第二作者为 Finley,通信作者为 LanStarD