[Freddie]:如果你不介意暴露位置信息,那没有问题。
简单一句话的回复,和易思北的说法类似。
[小萌]:也就是说,你认为还是有点问题?
[Freddie]:位置信息暴露,可能会被人利用。
[小萌]:是吗?
[Freddie]:发几张你的照片给我。
肖萌的单人照比较少,但和姐姐的合影很多。肖萌在相册里翻了翻,随手着了几张去年高考后姐妹俩外出旅游时的合影给路之航。五分钟后,路之航指出了每张照片的拍摄地点,地点详细到街道名称。姐妹俩一脸震惊面面相觑。
[小萌]:师兄,都正确!你怎么做到的?
[Freddie]:办法很多。比如用街景对比,用社会工程学原理分析。
[小萌]:可有些照片根本没有街景吧,比如第二张,我们站在一块大草坪上,周围完全没有标志性建筑,你怎知道的?
这张照片是高考成绩出来后,姐妹俩回到母校拿成绩单,在学校的绿茵场拍摄的照片。
[Freddie]:是日晷原理。
[小萌]:日晷原理?
[Freddie]:太阳照在你们身上,在草坪上留下了两道阴影。根据地球和太阳的运动位置关系,在不同时刻、不同地点,地球上各个地方的日晷影长不一样。我根据你们两人和阴影的位置、角度关系,再根据照片的拍摄时间,算出了你们所在地的经纬度,精确度到分。有一定误差,误差范围大约四平方千米;再根据估算的草坪面积,和卫星照片进行对比,就找到了照片拍摄所在地。
[小萌]:我明白了……也学习到了!
[Freddie]:上传到网络的任何信息都会留下痕迹,就像人的指纹一样。
[小萌]:嗯……师兄,谢谢你的指点。我会劝姐姐减少发微博的频率的。
[Freddie]:好。
结束了和路之航的通话,肖萌对肖薇摊了摊手。
肖薇旁观完了两人的聊天,在一旁叹息:“无所不能的程序员啊!总算见识到顶尖学神的厉害了,在大神面前,真是毫无隐私。”
肖萌若有所思,直到手机自动黑屏,她才如梦初醒,精神抖擞地盘坐在床上,郑重其事地打开微博网页。
“你这是在干嘛?”肖薇人生中罕有猜不到妹妹举动原因的时刻。
“我试着找一找师兄的微博马甲是哪一个。”
“我的粉丝有好几万呢,你怎么找?”
“我大概有点线索……”
肖萌说着,在输入框输入了“Freddie”这个单词,找到了三个相关id,第一个id是汉字+Freddie的格式,相关信息显示“关注145、粉丝304、微博2617”;肖萌点开一看,就通过此W微博转发的娱乐新闻排除了这个ID和路之航的关系;另外两个ID是Freddie73和Freddie220284,其关注、粉丝,微博数量都很少。
“应该就是这个了Freddie220284了。”
“嗯?”肖薇把头搁在妹妹的肩膀上,从她身后看着电脑屏幕。
肖萌点开了“Freddie220284”,关注1,粉丝24,微博也只有一条,就是注册时发的那条。
“这个ID十分可疑,像机器ID。”
“一定是师兄。”肖萌看着这个ID,心中百感交集。她确定,如果路之航在她面前,她恐怕控制不住又想给他一个拥抱。
肖萌如此言之凿凿,肖薇也相信妹妹的判断。
“只关注了我一个人,他注册这个微博仅仅关注了我一个人,应该是因为你。”
“嗯……”
“你这位师兄怎么会取这么个名字?”
“Freddie是他的挪威名,220和284是一对亲和数。”
肖薇的数学显然没肖萌好,她问:“什么是亲和数?”
肖萌道:“数学家用亲和数来比喻两个朋友之间的感情。220和284是人类最早发现,又是最小的一对亲和数。”
人和人之间之间讲友谊,数之间也有“相亲相爱”,根据数学定义,如果两个数甲和乙,甲的所有除本身以外的因数之和等于乙,乙的所有除本身以外的因数之和等于甲,则这两个数字是一对亲和数。毕达哥拉斯曾经说过一句名言,朋友是你的灵魂的倩影,要像220和284一样亲密。
肖薇的敏锐度不低于肖萌,她听完亲和数的故事微微一怔:“那么,他用这个ID,是自己希望有朋友吗?”
“……嗯,应该这样。阿斯伯格也有社交需求,他可能是交不到什么朋友,但不等于不希望交朋友。想要朋友而不得,他应该会觉得很孤独。”
肖萌点开了Freddie220284微博的基本信息栏,看看注册时间——时间位于两个月前,正是她在书店偶遇路之航的那天,他买了那本《双胞胎的学霸之路》,还带她参观了实验室。肖萌仔细回忆他们在书店时的那番交谈。当时她清晰地感觉到路之航对身为双胞胎的自己的好奇和羡慕,感受到他可能孤独的度过了一个童年。
肖萌盯着220284这个ID,沉默了很久,根本说不出任何话来——自己的这位大神师兄,到底是怀着怎样的感慨注册了这样的微博ID呢?
肖薇注意到妹妹的情绪不太对,就连伸手拿过她手中的鼠标她都没什么反应,于是她拍了拍妹妹:“对了,我有个灵感,你能不能帮我实现?”
“什么?”肖萌这才反应过来,她连忙驱散开自己心中的怅然。
肖薇拿过她手里的鼠标,点开自己的主页,示意她看粉丝数量。
“你看看,前几天我的粉丝数量突破了5万,我想知道我的5万粉丝各由什么人群组成,你能写个程序帮我把这些粉丝的基本信息都整理出来?了解这些粉丝的性别、年龄、地区等等,方便我以后发微博时能有的放矢?”
肖萌的编程水平类似赵括,完全的纸上谈兵,信息竞赛和ACM的训练比较偏于算法,应用性非常差,就好比理论数学和应用数学的差距那大。她在此之前没写过任何具有实用性的软件,更别提网页信息抓取软件——不过,人生总需要一些挑战,她觉得这个挑战应该在自己能力范围内,当即点头。
“好的。我明天试试看。”
肖薇用脑门撞了下她的,然后伸手关灯。
“那咱们睡觉吧。”
从第二天开始,肖萌就按照肖薇的要求开始写一个网页信息抓取代码。
第一天,她下载了几本书,把浏览器开到调试模式,开始研究网络协议和前端语言,分析微博的结构和条件;第二天,她再根据已有的结果一边查资料一边用C++写代码——因为信息竞赛和ACM的要求,她对C++掌握得比较好。
所谓知易行难,随后,肖萌发现这件事的难度比自己想得大得多,她在电脑前奋斗了一整天,才写了不到一百行代码,而且还老出错。
肖薇看到妹妹忙到晚上十点,也是好气又好笑:“不用那么拼啦,写不出来也没事,我又不着急。”
“不,我要写出来。相信我,没问题。”
“那好吧,你加油。”
有追求是好事,没这点精神也没办法在华大计算机系混下去,以后写代码的苦日子还多呢——肖薇拍了拍妹妹的头顶,爬到床上开开心心的和易思北聊天去了。
到了第三天,肖萌的进展依然不太大,卡在某个筛选条件上,怎么写代码都不对——不得已,她给路之航发了一条信息,再次泪流满面的求助。
大神就是大神,只针对肖萌的一个求助问题,就看出了肖萌的真正需求。
[Freddie]:如果你要收集信息,应该有现成的一些爬虫软件软件。
[小萌]:那些软件都不好用,有些还要收费……我也想通过写这种程序来提高应用水平。
[Freddie]:那用python写代码比较快。
Python这个大名鼎鼎的软件肖萌当然听过,但仅仅是听过。
[小萌]:是吗?但我还不会……
[Freddie]:你会什么?
[小萌]:C,C++,java。
[Freddie]:你电脑上的C++是哪个版本?
肖萌迅速回复,片刻后,肖萌收到路之航发来的两个CPP文件。
[Freddie]:我之前写过一些信息抓取软件,这两个应该对你有参考价值,你可以看看。
[小萌]:谢谢!
肖萌感激涕零。不过,“谢谢”两个字打完,她才猛然发现,自己和路之航的聊天记录里,大都是各种各样的“谢谢”——自己和大神的技术距离怎么就那么远呢!
[Freddie]:有不懂的问我。
肖萌打开这两个CPP文件,其中一个针对性很强,部分代码可以直接复制过来;至于另一个CPP文件,肖萌被里面的数万行代码震惊了。她粗略地看了看,却发现有点不对,这些代码的信息抓取能力有些强到离谱,有点像黑客的手段。
[小萌]:师兄,你是针对什么网站写的这些代码?
[Freddie]:针对一个数据网站写的。
肖萌的疑惑稍稍被解开了一点,虽然内心还不能完全放心,但没有再问。