正文
对于这种情况,我们就需要一个功率更大的AP了,并且将SSID与密码设置的和咖啡店的完全一致 —— 根据wifi的连接策略,同样的热点名将会优先选择信号更好的。如果密码也一样,他们就能顺利的连上我们的AP。于是我们的热点就像磁金石一样,将新来的用户统统吸过来,于是可以尽情的掌控了~~~
不过最终的难点却不在此,要找出每个网站缓存最久的脚本资源才是重中之重。
事实上,光看缓存时间是远远不够的 —— 有不少文件设置了很久的缓存,但是他们却经常的更新。最常见的就是带时间戳或哈希值的脚本URL,他们几乎三两天换一个,却有很长的缓存时间,这显然是不可取的。因此,我们需要根据资源的缓存时间和上次修改时间,来衡量其稳定程度。
为了能方便从各大网站寻找稳定度较高的资源,我们使用PhantomJS来实现自动化分析。PhantomJS是没有界面的命令行Webkit浏览器,使用它来模拟网站的访问,能为我们节省大量的系统资源。
我们监听page.onResourceReceived事件,即可获取所有资源请求的回应数据。之前已提到,缓存时间是必要条件,修改时间是充分条件。修改时间早说明这个资源不经常改变,可以放心用!
首先我们过滤掉缓存很短的资源,很快就过期的资源是没有利用价值的。然后按上修改时间的先后排序,最终为每个站点选择稳定度最优的几个资源。
代码实现很简单:
https://raw.github.com/EtherDream/closurether/master/tool/cache-sniffer/sniffer.js
我们测试几个常用的大网站(url.txt):
www.hao123.com
www.taobao.com
www.renren.com
www.kaixin001.com
www.baidu.com
www.baidu.com/s?wd=ss
tieba.baidu.com
map.baidu.com
weibo.com
www.sina.com.cn
www.mop.com
www.tianya.cn
bbs.tianya.cn
www.youku.com
user.qzone.qq.com
qzone.qq.com
www.163.com
mail.163.com
www.126.com
www.sohu.com
根据返回的数据来看(-几天没修改 / +缓存几天),每个站点下都有不少很久没有修改的脚本文件。
E:\NodeJS\closurether\tool\cache-sniffer>phantomjs sniffer.js
== www.hao123.com ====================
-2 / +360 http://s0.hao123img.com/res/js/track.js?381633
== www.taobao.com ====================
-497 / +3650 http://a.tbcdn.cn/apps/med/other/p4p/p4p_show_link.js?rd=20120305.js
-229 / +3650 http://a.tbcdn.cn/apps/matrix-mission/feedback/feedback.js
-178 / +3650 http://a.tbcdn.cn/s/kissy/gallery/??offline/1.0/index-min.js?t=20130701201313
== www.renren.com ====================
-631 / +365 http://s.xnimg.cn/a12023/jspro/beacon.js
-491 / +365 http://s.xnimg.cn/n/apps/photo/modules/seed/photoSeed.js?r=1373879537560
-454 / +365 http://s.xnimg.cn/a36267/js/register/register-xn6207-v6.js
== www.kaixin001.com ====================
-737 / +365 http://s.kaixin001.com.cn/js/core/ScrollObserver-000179b73.js