缘起

今天做计算机网络课程的作业,要求用 nc 命令来访问一个网站。作业给的示例网站是 www.example.com ,自然地在 HTTP 请求里 Host 填写的就是 example.com。作业还另外要求自己找一个网站尝试。自然地,我选了自己的个人网站进行尝试

$ nc kb-jiaheng.github.io 80

但是忘记修改 Host 字段的内容了,HTTP 请求写的是:

GET / HTTP/1.1
Host: example.com
Connection: close

结果意外的得到了一份时空漂流瓶:

HTTP/1.1 200 OK
Connection: close
Content-Length: 8453
Server: GitHub.com
Content-Type: text/html; charset=utf-8
Last-Modified: Thu, 24 Feb 2011 15:30:37 GMT

好家伙,挖掘到2011年的古坟了。想想当年,我也才只是伍岁小孩。紧接着是嵌有俄语的 HTML:

完整的 2011 年 HTML 源码
<!DOCTYPE HTML>
<html>
<head>
<title>Мастер-Ф ремонт и строительные работы</title>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />

<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.3.0/build/cssreset/reset-min.css">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="stylesheet" href="nivo-slider.css" type="text/css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js" type="text/javascript"></script>
<script src="jquery.nivo.slider.pack.js"></script>
</head>
<body>
<div id="wrapper">
<div id="content">
<div id="header">
<h1>Мастер-Ф</h1>
<h2>Строительные и отделочные работы</h2>
<span id="phone"><span style="font-size: 0.8em;">г. Тверь</span><br/>+7 916 733 7450</span>
</div>
<div id="about">
<p>Сегодня мы выполняем весь комплекс ремонтно-отделочных работ. Осуществляем отделку "под ключ" объектов жилищного, административно-торгового и общественного назначения.</p>
<p>Наша фирма имеет несколько строительных бригад с богатым опытом работы. Средний стаж наших специалистов составляет 10 лет.</p>
<p>Основной задачей нашего коллектива является творческий подход, высокий уровень организации работ и соответствие ГОСТам, СНиПам и стандартам качества строительных работ.</p>
</div>
<div id="clients">
<h2 class="header_2">Клиенты о нас:</h2>
<ul>
<li><a href="#tab_content_1"><span>АО &laquo;АЛВИСТ&raquo;</span></a></li>
<li><a href="#tab_content_2"><span>Студия моды &laquo;Талия&raquo;</span></a></li>
<li><a href="#tab_content_3"><span>&laquo;Дизайн-Сити&raquo;</span></a></li>
<li><a href="#tab_content_4"><span>&laquo;Концерн Европа&raquo;</span></a></li>
</ul>
<div id="tab_content_1">
<h2>Акционерное Общество <b>&laquo;АЛВИСТ&raquo;</b></h2>
<div class="client">
<p>Благодарим коллектив <b>ООО &laquo;Мастер-Ф&raquo;</b> в лице дирректора <b>Филиппова Игоря Анатольевича</b> за высокую организацию и проведение ремонтно-строительных и отделочных работ, долгосрочное сотрудничество с нашим предприятием.</p>
<br/>
<p style="text-align: right">Генеральный директор <b>В.А. Александров</b></p>
</div>
</div>
<div id="tab_content_2">
<h2>Студия моды <b>&laquo;Талия&raquo;</b></h2>
<div class="client">
<p>Выражаем благодарность коллективу <b>ООО &laquo;Мастер-Ф&raquo;</b> за отличную работу, высокое качество и соблюдение сроков по ремонтно-строительным и отделочным работам в салонах нашего города.<br/>Пять лет сотрудничества - хорошее доказательство наших отношений как партнеров.</p>
<br/>
<p style="text-align: right">Генеральный директор <b>Н.Н. Халипская</b></p>
</div>
</div>
<div id="tab_content_3">
<h2><b>&laquo;Дизайн-Сити&raquo;</b></h2>
<div class="client">
<p>Фирма &laquo;Дизайн Сити&raquo; благодарит работников отделочной фирмы <b>ООО &laquo;Мастер-Ф&raquo;</b>. Ваше мастерство, слаженность работы мастеров и грамотное руководство значительно упрощают нам процессы, связанные с ремонтом наших магазинов и офисов. Наше сотрудничество длится почти 3 года, и за это время не было ни одного повода усомниться, что следующий ремонт мы доверим Вам.</p>
<br/>
<p style="text-align: right">С уважением, Генеральный директор <b>А.О. Горюнов</b></p>
</div>
</div>
<div id="tab_content_4">
<h2><b>&laquo;Концерн Европа&raquo;</b></h2>
<div class="client">
<p>От имени руководства <b>ООО &laquo;Концерн Европа&raquo;</b> выражаю Вам и всему коллективу <b>ООО &laquo;Мастер-Ф&raquo;</b> благодарность за высокий уровень проведения и безукоризненное соблюдение сроков сдачи отделочных работ на объектах нашего предприятия.</p>
<br/>
<p style="text-align: right">Финансовый директор <b>А.В Петраков</b></p>
</div>
</div>
</div>
<h2 class="header_2">Примеры наших работ:</h2>
<div id="portfolio">
<div id="images">
<img src="images/1.jpg" title="Натяжные потолки любой сложности"/>
<img src="images/2.jpg" style="display:none" title="Дизайн света" />
<img src="images/3.jpg" style="display:none" title="Качественная укладка плитки и монтаж сантехники" />
<img src="images/4.jpg" style="display:none" title="Укладка паркета"/>
<img src="images/5.jpg" style="display:none" title="Дизайн помещений"/>
<img src="images/6.jpg" style="display:none" title="Работа со сложными конструкциями"/>
<img src="images/7.jpg" style="display:none" title="Работа со сложными конструкциями"/>
<img src="images/8.jpg" style="display:none" title="Натяжные потолки"/>
<img src="images/9.jpg" style="display:none" title="Установка дверей"/>
</div>
</div>
<div id="footer">
<p>Звоните нам! <span class="phone">+7 916 733 7450</span></p>

<div class="copyright">© <script>document.write(new Date().getFullYear())</script> Мастер-Ф</div>
</div>
</div>
</div>

<script>
$(document).ready(function(){
$('#images').nivoSlider();

$('#clients').tabs();
});
</script>
</body>
</html>

我吓了一跳,虽然最近确实在学习俄语,但是没有任何印象自己在个人网站上标记过任何的俄语,所以大抵和我没有什么关系。再看 HTTP 标题<title>Мастер-Ф ремонт и строительные работы</title>,着实被俄国人的取名惊吓了一下 —— Master F。颇为文艺呵。再往后面看,才知道原来是个俄罗斯的装修公司网站。可网站对应的主机名叫做 example.com,而且放在 GitHub 的服务器上? 有意思。于是我花了一些时间把网站复原了出来。

首先是根据 html 里的 src 和 href 等等,顺藤摸瓜,我恢复出了整个网站的模样。

网站首页的模样

看到这些照片,突然感觉有些触动。关于2011年,我已经不记得发生过什么事情了。但是家里的老式数码相机里依然存着家人和我在2011年时候的样子,存着那一年的种种景色和图景。我觉得完全和网站里这些照片的光彩是类似的。我未去过俄罗斯,但是这样的稍微有些暗淡的室内光打在墙壁上,外面寒冷至极,屋内暖而安心的感觉,是让我感到熟悉的。的确让人有一种家的感觉。或者说这样的温馨安全的感觉让我觉得有一种怀旧感。思绪渐渐又远去了……

Master-F 网站中的室内装修照片 Master-F 网站中的室内装修照片 Master-F 网站中的俄罗斯住宅室内照片
让人一看就有俄罗斯家庭的感觉

我在瑞典和挪威呆过一小段时间,虽然去的时候是夏天,看不到任何的冰川或是积雪,但是看到当地人居住的房屋,尤其是林雪平市的房屋让我印象极深,我常常会想象从屋里往外看是什么样子的感觉。我想大概和这几张照片差不多舒适吧!

这几张照片给我带来的舒适感来自这样的场景想象:外面积雪皑皑,飞雪停了有一段时间了,天气依然阴沉沉的。家里的暖气叫人感觉完全与户外远远隔开了,但是你好像离外面又不是很远,因为窗外就是雪景,打开窗户还是会倒灌进来一阵寒风。家门口几棵叫不上名字的高树,凌凌地站在那里,黑漆漆的。这时候在想些什么呢?或许是 codeforces,或许是和哥们打游戏,或许是学校里的某个姑娘……无忧无虑,小镇就这么大,装不下任何的焦虑和忧愁。就青年时期而言,在生活意义上与大都市隔绝也没有什么不好的。每天上学的时候有朋友、心仪的女孩值得期待,放学之后还有爸妈做的饭菜值得期待。晚上睡觉的时候,梦都是甜的。

但是这个网站怎么能叫 example.com 呢?根据 IANA 记载,自 1992年01月01日 开始example.com 就已经存在;而至少从 1999年6月 开始, example.com就已经是保留域名了。这个网站从一开始就无法通过 example.com 访问到,到底是哪个笨蛋前辈程序员在 GitHub 上忘记修改了 CNAME 呢(楽)。

我尝试发送这样一段 HTTP 请求

GET /CNAME HTTP/1.1
Host: example.com

然后得到

HTTP/1.1 200 OK
Content-Length: 12
Last-Modified: Thu, 24 Feb 2011 15:30:37 GMT

example.com

这到底是一家什么公司,它现在还在吗?公司的负责人是谁,现在怎么样?网站的制作者是谁,到底是哪个人放到 GitHub 上的?这些问题让我起了极大的兴趣。遇见即是缘分,遇到互联网上的坟不刨等于浪费。于是, GPT 启动!

公司其司 & 负责人其人

网页标题下面写着:

网页标题

Мастер-Ф (Master - F)
Строительные и отделочные работы (建筑与装修工程)
г. Тверь (特维尔市,г. 是俄语 город 的缩写)

我们从这里得到了公司的服务范围、地址和名称。

然后网页上面有个 Клиенты о нас (顾客如何评价我们),第一个评价就是

Благодарим коллектив ООО «Мастер-Ф» в лице дирректора Филиппова Игоря Анатольевича за высокую организацию и проведение ремонтно-строительных и отделочных работ, долгосрочное сотрудничество с нашим предприятием. (АО «АЛВИСТ» Генеральный директор В.А. Александров)

我们感谢 ООО «Мастер-Ф»(Master-F有限责任公司) 全体员工,特别是公司负责人 Филиппова Игоря Анатольевича,感谢贵方对维修、建筑及装修工程所进行的高水平组织与实施,以及长期以来与本企业的合作。(“ALVIST”股份公司 维克托尔·阿列克谢耶维奇·亚历山德罗夫)

顾客如何评价我们

注: дирректора应为директора,可能是当时网站制作者的笔误。Александров 其人的信息在特维尔市 2004 年城市日庆典上市长感谢信里有所印证。

директор 是 director 的意思,俄语公司语境里的通常就是公司的法定/行政负责人的意思。据此可以猜测这是一家规模不大的公司,公司的老板可能就是 Филиппов Игорь Анатольевич 先生,转写为英文就是 Igor Anatolyevich Filippov.

我们去俄罗斯联邦税务局探索一番

俄罗斯税务局页面截图

第一个搜索结果就匹配了 Тверская область (特维尔州),公司名字也叫Мастер-Ф,不过负责人的名字叫 Филиппов Андрей Анатольевич,英文转写为 Andrey Anatolyevich Filippov. 好家伙,开办的地点和公司名称一样,两人的姓和父称都一样,只是名字不同,傻瓜才会相信两人没有关系。

在第 28 项我们看到 Филиппов Игорь Анатольевич,这正是我们要找的人!也就是我们在俄罗斯的税务局里找到了这位先生的登记信息,而且有心者还可以发现 Игорь 和 Андрей 各自出资了 5000 卢布创建这家公司。我想知道,他们现在过得怎么样呢?

根据这份 PDF 开头的 ОГРН 1026900550951 和 ИНН 6902033541,我们完全可以确定下来这家公司了。GPT 给我分享了一个网站,告诉我里面显示 Master-F 这家公司平均在册员工数为 1。我没能打开这个网站,但也太幽默了,让我想起斯拉夫超人。

Tochka 的企业核查页面同样显示,截至 2026-04-16 公司仍在运营,并被列入俄罗斯中小企业名录中的 Микробизнес(微型企业);它还给出了 2024 年财务数据:营业收入约 99.3 万卢布、支出 7.1 万卢布、净利润约 92.2 万卢布。

好吧,总共2个人做股东、1个人工作的公司,2024年还有93%的利润率,至少从2011年开始的企业活到了现在。Bravo… Очень хорошо!

神秘的程序员老哥

所以在 Thu, 24 Feb 2011 15:30:37 GMT,到底是谁上线了一个域名是 example.com 的俄罗斯装修公司网站呢?

首先还是给 index.html 做个最朴素的文件指纹。我们恢复出的页面刚好是 8453 字节:

$ wc -c index.html
8453

$ sha1sum index.html
5ac10f13b520539af55c625237cf6735ed021f6c index.html

我把这个 SHA-1 丢进 Software Heritage 的已知内容查询里,居然真的显示 Found。也就是说,这 8453 个字节以前确实被 Software Heritage 收进过档案。

Software Heritage

Software Heritage 还给出了这份内容的其它摘要:

swh:1:cnt:0618c46a9481425c493ce33a63e7d347f7c57060
length: 8453
sha1_git: 0618c46a9481425c493ce33a63e7d347f7c57060
sha1: 5ac10f13b520539af55c625237cf6735ed021f6c
sha256: 9c7a7921bccd42d1d6435125e50cd6ecdd49756cb00ae196ec03c5f7ac154199

而且既然我们是在 nc GitHub 的服务器的时候获取的这个网站,而 GitHub Pages 从 2008 年就开始提供服务,那么这个网页一开始一定在 GitHub 上 deploy 过。这时候前面的 HTTP Header 又派上用场了:

Last-Modified: Thu, 24 Feb 2011 15:30:37 GMT

既然已经知道这是 GitHub Pages,又知道网页最后修改的时间精确到了秒,那就去翻 GitHub 当年的活动记录。我从 GH Archive —— 一个保存 GitHub 的公共事件的数据库 —— 把 2011 年 2 月 24 日 14:00 到 16:59 UTC 这几个小时的数据下载下来。GitHub 从 2013年开始才正式把 GitHub Pages 的域名从 .github.com 改成 .github.io。所以筛 GitHub Pages 味道比较重的仓库一定是名字里带 .github.com 的,或是在 gh-pages 分支。翻到 15 点这一小时,让人眼前一亮:

2011-02-24T15:05:05Z  CreateEvent
master-f/master-f.github.com

2011-02-24T15:05:43Z CreateEvent
repository: master-f/master-f.github.com
branch: master
actor: buger

好你个 buger 啊,这个仓库今天居然还活着。让 Git 负责告诉我们仓库里面十五年前究竟发生了什么吧!

$ git clone https://github.com/master-f/master-f.github.com.git
$ cd master-f.github.com
$ git log --reverse --date=iso --pretty=format:'%ad | %an | %s'

2010-12-30 01:18:38 +0300 | Leonid Bugaev | First revision
2011-02-24 15:56:28 +0300 | Leonid Bugaev | New design
2011-02-24 16:34:45 +0300 | Leonid Bugaev | Pre-release
2011-02-24 16:49:15 +0300 | Leonid Bugaev | Release, fixed some bugs
2011-02-24 16:55:30 +0300 | Leonid Bugaev | Spell Fixes
2011-02-24 17:30:39 +0300 | Leonid Bugaev | Added CNAME
2011-02-24 18:30:20 +0300 | Leonid Bugaev | CNAME test

Leonid Bugaev \^_^/ 他的 GitHub 用户名正是 GH Archive 里看到的 buger。

算了一遍 sha1sum,一切都对的上。到这里,网站是谁提交到 GitHub 上的就可以确定了。可example.com 到底是怎么回事?直接看 git log:

$ git log -p --follow -- CNAME

第一次添加 CNAME 是下午 17:30:

commit 779ff59cc9ac38c1da44d31f41f070439ec61fb5
Author: Leonid Bugaev
Date: Thu Feb 24 17:30:39 2011 +0300

Added CNAME

+masterff.ru

所以 Leonid 老哥其实一开始写对了,域名是 masterff.ru。然后恰好一个小时以后:

commit cd066f2f29aa99cd37b8c56c774a11c1e2af3a72
Author: Leonid Bugaev
Date: Thu Feb 24 18:30:20 2011 +0300

CNAME test

-masterff.ru
+example.com

老哥亲手把正确的域名 masterff.ru 改成了 example.com,commit message 甚至就叫 CNAME test。然后这个测试值在仓库里一躺就是十五年。

更妙的是时间。最后一个 commit 是 2011-02-24 18:30:20 +0300,换算成 GMT 正好是:

2011-02-24 15:30:20 GMT

而我最开始收到的 HTTP Header 是:

Last-Modified: Thu, 24 Feb 2011 15:30:37 GMT

差了 17 秒。

结语

人生多有奇缘妙机啊。2001年 Филиппов 兄弟(如果没有猜错他们的关系的话)在特维尔市联合创办了 Master-F,在 2011 年请了 Leonid 帮忙写网站。Leonid 写完网站之后留下了一个 CNAME test。岁月流转,到了 2026 年, Филиппов 兄弟的公司依然屹立,Leonid 成为了 Go 圈子里小有名气的人,而我写计算机网络作业,借助大语言模型,成为了看到这一切的人。

2001年、2011年,那依然是互联网的黄金年代。2026 年,大语言模型技术突飞猛进。千禧年初的俄罗斯,第一个一百年奋斗目标达成后的中国。事实就是没人能够知道未来是什么样子。不过,噢,我已经20岁了啊……