上周日,我写了一篇征女友帖子(此处应有捂脸)。

一开始就是心血来潮,只准备在我的朋友圈里面传播一下,所以呢,最开始,一些最基础的个人信息,例如我叫什么、我在哪都没提及。我更多地,只是想看看周围的小伙伴会怎么阅读我写我的三观,或许我的一度人脉里面,有我潜在的另一半呢(那时候我觉得这应该是最大概率了)。

其实,关于我写的内容呢,也可以说早有准备,都是最近半年,我在思考我的未来规划时想的很多思绪,整理一下就成文了。主要介(tu)绍(cao)一下我自己,然后说说我的三观。本来没想写得冗长,也没想碰太尖锐的话题,不过觉得这都是很好的漏斗,所以最后的结果是,洋洋洒洒,想到哪写到哪。

我得到的反馈呢,有人说我写得好,条理清楚说到了重点了、思考很到位;也有人说我在描述一个不存在的完美形象,活该我单身;也有人说,为啥你这么好(把自己表现得)却还单身呢……

夸我的我很开心,对于负面的评价,我也很在意,中间更新了几次做了回应,不过最后我选择注释掉,其实,这也是漏斗啊。嗯,所以,我觉得最有意义的更新呢,就是我把样式修正了——用一套老代码上线,移动端的字体啊、颜色什么的都很拙劣,有损我优秀工程师的形象。

Anyway,最后的传播,完全出乎我的意料了。朋友、同事对我的个人问题好热心,在此表示非常感谢!

由于最开始我只是想在自己的朋友圈看看,所以我采集数据用的是 Inspectlet ,它能非常详细地记录浏览者的行为,例如手指的动作(包括多点触控)、鼠标移动的位置、点击、页面渲染的状态等等,几乎就是录屏一样的效果。例如这样:

Inspect 记录效果

(这显然就是一个左撇子,嘿嘿。)

不过这货免费版每个月只能记录 100 个会话,本来想着我的朋友圈也够了,但是玩玩没考虑到大家对我的关心如此热烈。我发完就出去吃饭了,回来的时候就发现已经超了。所以呢,还是要自己动手,方可丰衣足食。

考虑我的页面嘛,其实单页静态的,数据太多我也看不过来,所以我直接记录一下屏幕大小、滚动条的长度和位置就差不多了。再考虑服务器性能,PHP 、数据库也省了,直接用 Nginx 返回 HTTP 204 ,记录到 nginx 日志里面就好了。

# nginx config
location /204 {
  return 204;
}

然后前端的写了一段简单的 JavaScript:

var last_url = '';
var skipped = 0;

function send() {
	var b = document.body;
	var url = '/204/' + innerHeight + '/' + b.scrollTop + '/' + b.scrollHeight + '/' + innerWidth + '/' + b.scrollLeft + '/' + b.scrollWidth;
	if (url === last_url && skipped < 10) {
		skipped++;
		return;
	}
	skipped = 0;
	last_url = url;
    var req = new XMLHttpRequest();
    req.open('GET', url, true);
    req.send();
}

setInterval(send, 1000);

加上 Nginx 我启用了独立 用户 cookie 就这样,我能够辨识发回来的是那个用户,然后我就采集了一些数据。

再后来一个小时,我觉得我还是很懒,最后自己处理数据还是太烦了(事实证明我确实懒,到现在我也还没去系统地研究我搜集到的日志),所以我又把博客上的 Google Analytics 追踪代码嵌入了。不过那都是8点之后的事情了,所以看到一个特别高尖峰:

Page View

Google Analytic 给的数据还是很有意思的,这里稍微分享一下。它一共搜集到了 3.3K 页面浏览(Page View),其中独立页面浏览有 2.4K ,平均页面停留时间 3:46 。因为我博客平时几乎没有流量,所以这个基本就是我那个文章的结果。上面的图中,特别有意思的几个尖峰依次是:第二天早上 8 点、中午 12 点、晚上 7 点和晚上 9 点。非常明显地看出了大家都在什么时候有空看手机。当然,因为随着时间推移,消息变老了可以到达的人群就越少了,总体的趋势还是变小的。

从我的 Nginx 日志里面,我粗略统计了一下,大概有 4K 的浏览量,加上一个学弟帮我在他的公众号发布了,我觉得前后有大概 5K 的浏览量。应该说,并不算多。

其实,鉴于在公众号上发布了,会被太多下游抓取了,最后我让学弟在第二天晚上的时候删掉了。我自己网页上的内容,也限制了只能在微信内打开,最后在第三天以后关闭了。是的,我觉得,太多个人信息放在公共互联网上并不是一件什么好的事情,互联网这个情况比较特殊,你想要删除一个东西是非常困难的。

回到刚刚的话题,我在 Nginx 里面搜集了什么内容呢?一条日志大概是长成这样的:

114.240.***.84(-) 0.000 - [16/Jul/2017:10:11:41 +0000] winguse.com "GET /204/672/1977/7622/414/0/414 HTTP/2.0" 204 0 "https://winguse.com/0/secret/notes-of-significant-other-****?from=timeline&isappinstalled=0" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 Mic
roMessenger/6.5.10 NetType/WIFI Language/zh_CN" uid=0400000******90903 -

我可以知道浏览者的:

  • IP 地址 根据 IP 可以推断 Ta 的地理位置,大多数情况下可以精确到 5 Km 以内,有兴趣可以试试这个工具
  • 浏览的时间
  • URL 这个 URL 我搜集了屏幕尺寸、滚动条的长度和位置,其中屏幕尺寸可以猜测终端型号
  • Refer URL (引用 URL) 这个日志是一个 Javascript 发起的跟踪报告,可以看到用户正在浏览的页面。根据微信添加的 URL 参数,可以看出它来自朋友圈的时间线
  • User Agent 这个介绍的是用户浏览器的信息,其中包含了系统信息(iPhone, iOS 10.3.2,根据上报的屏幕宽度 414,可以猜测是应该是 6 / 6s / 7 的 plus)、微信内流量、网络是 WiFi、语言(中文)。
  • User Id 这个是 Nginx 自动生成的用户标识符,用来标识那些日志是属于同一个用户的。

这里科普以上信息,是一个服务器日志最基础的内容,几乎所有的服务器都会打开这样的日志。不过我这里是真懒,目前也没去分析它们,虽然我不知道谁是谁,但是应该有很多很有意思的数据。

好了,说到最后,其实我知道大家挺八卦的,最后我认识了多少妹子呢?结果怎样呢?

这一次,我的确很有效率地得到了好几个妹子的联系方式。总的 CTR (Click Through Rate,点击率)大概是 0.5% ,也就是大概有 20 多个人加我好友,其中超过三分之二是打酱油——只是想认识一下我而已,而且主要是男生(捂脸,鉴于我是直男,男同胞先被忽略了)。

关于跟妹子聊天,其实我觉得我是真的不大会,目前都只是停留在互相认识上。加上大家天南海北,有机会见面的也不多,能够生活上的交集更少。其实我一开始并不抱多少期待吧,感觉更多是心血来潮得到了这么一个意外的结果。我在努力地提高的我社交能力(当然我并不花心也不允许我自己花心),不管怎么说,谢谢各位愿意去认识我、以及谢谢各位帮我认识更多的人,也希望我可以为身边的人提供一点微薄的帮助或者支持。

嗯,如果以后有什么故事发生了,我会告诉大家的,嘻嘻~