浏览者信息收集

仅仅记录投票票数确实有些无聊,所以需要适当的收集一些信息在进行统计就能得到一些更有趣的图表。

Request

以最基础的Request header入手。

HTTP 消息头允许客户端和服务器通过 request和 response传递附加信息。一个请求头由不区分大小写的名称后跟一个冒号“:”,冒号后跟具体的值(不带换行符)组成。该值前面的引导空白会被忽略。

每次的HTTP连接中必定会有header内容,因此从此很方便的获取访客的基本信息。

header支持的标准字段有很多,在此就仅列出一些拥有有效信息的字段:

字段名 描述 示例 状态
Accept-Charset 能够接受的字符集 Accept-Charset: utf-8 常设
Accept-Encoding 能够接受的编码方式列表。 Accept-Encoding: gzip, deflate 常设
Accept-Language 能够接受的回应内容的自然语言列表。 Accept-Language: en-US 常设
Referer 來源頁面 Referer: http://en.wikipedia.org/wiki/Main_Page 常設
User-Agent 浏览器的浏览器身份标识字符串 Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Maxthon/5.2.1.1000 常設

想要查看更多内容查看Wikipedia

以上就是比较常用的含有有效内容的字段。

不过Request header中包含的信息实在是少的可怜,所以需要使用其他方法来获取更多的信息。

阅读更多
Canvas Fingerprint的使用

最近又又又买了一个新的域名,所以打算在这域名基础上写一个匿名投票用的统计系统(捡鼠标垫买电脑系列)用于一项长期的数据统计(不知道收集到多少数据)。

分析

既然是投票系统,那么就必须对防止刷票做处理。
记得N年以前有个网站投票貌似是关于360的文章,底部有个投票并没有做处理,所以我光靠按键精灵就刷了几千票,不过十几分钟之后貌似被发现了。

所以关于防刷票我能写的就有以下几种方案:

  1. 登陆注册——极大的增加投票所需要的成本,但是又由于成本导致真实用户被拒之门外。
  2. Cookie标记——少量的成本,也容易被清理。
  3. ip限制——没有成本,但是由于NAT的网络环境存在导致无法实行。
  4. ip+UA限制——没有成本,但是可能会出现UA重复的情况。
  5. Canvas Fingerprint——没有成本,极小的重复可能,但是和4一样更换浏览器就可以突破限制。

综上所述似乎Canvas Fingerprint是一个比较合理的选择。

Canvas Fingerprint

Canvas指纹的原理是先使用canvas绘制一张图像,再使用canvas.toDataURL()方法可以获得图像的Base64格式编码,所得的最后一块32位长度的内容就是可以用于识别用户的crc校验码

阅读更多
Online 独立服务器设置 ipfailover

从别人那里收来一台20o的母鸡E3-1230 V3+32G+2T+1G,这性价比简直是无敌。虽然来说是欧洲机房,从美国绕过去,但是丢包率几乎为0。上次买的25刀一个月的配置没有他一半,丢包率上天。

但是不知出于什么原因,自带的ip被mt(我是纯洁的目的)封了,而且我也想拿来做其他程序的后端,所以会有两种方案

阅读更多
Lombok-提高Java编写效率

说到Java,其一个明显的特征就是实体类中会有大量的get,set方法。虽然说现在IDE都可以一键生成get,set,construct方法,但是每个类都得花个一分半分的时间。Lombok通过注释的方式帮助我们简化臃肿的Java代码。

(虽然通过Lombok在Java文件中以注释方式代替,但是通过编译器编译后会自动生成方法,因此不会影响代码运行效率)

项目主页:https://projectlombok.org

阅读更多
群晖216j家用入门级NAS

前年从淘宝那儿30块买了个MBL的壳,又买了块1T的蓝盘装进去就凑活着当块NAS用了。然而MBL只有100M的网卡,也没有USB也不能WOL,还是PowerPC的构架,连内网穿透都没有合适的方法。

很久以前买个Atom折腾过黑裙,但是那是家里的情况,随便找个角落就可以塞进去,然而在学校就没有那么多空地塞一个大机箱了,还是直接买个白裙算了,还带内网穿透。

于是这几天心魔作祟,趁群晖216j售价降为999的时候买了一台。

阅读更多
hexo搬家

问题

上课需要笔记本,而装了Deepin的笔记本耗电量明显比windows要高出很多(即使强制限制了频率),依然只有40-50分钟的续航(换不起)。Windows下可以开启双重节能模式在只编代码和稍微上上网的情况大概可以使用一个半小时,马马虎虎撑过两节课。

而且Linux的桌面环境小BUG不断,比如Deepin的控制面板无缘无故吃我CPU、外界显示器输出偶尔会切成其他分辨率,Manjaro KDE的关机会被其他程序给中断。当然也没有Office全家桶。

阅读更多
递归查询树

由于帮老师做的项目里需要有栏目,所以必定也需要一系列子栏目,因此栏目在数据库中的储存结构就大概为

id
title 标题
uri uri
parentColumn 父栏目id

因为任何栏目都是和上下栏目关联的,如搜索某栏目的文章,那么子栏目下的文章也是要进行检索的。因此需要关于这一个栏目的完整的树。

主要思路就是查询子节点,若子节点存在再接着查询子节点。

阅读更多
Jenkins maven自动部署

吾选择的是Java的后台开发方向,目前只学到SSH和SSM的开发,之前虽然是在比赛中做了几个后台,但是都是使用的祖传代码,是上上届流传下来的代码。我也只能从这代码中进行修改,每次都得打包成war然后再发布到TOMCAT上,每次改代码都得手动部署真是麻烦。

后来听说jenkins可以做持续集成,于是把新的项目都改成maven部署过程就节省了大部分时间。

阅读更多
Print.moe update

由于很多人反馈图片加载很慢。。然而我这加载速度都在200kB/s到1mB/s左右,所以没啥感觉,为了防止过久的加载所以加入了size参数可以限制图片的大小,单位为byte。

而且为了尽量减少图片加载延迟,我开始尝试缓存konachan的所有图片(当然是S级的),总共180G,两年间增长了130G,互联网时代的发展趋势啊。

然而同步进网盘时由于文件过多导致有时候同步几个G就会卡主不动,索性修改了文件的储存方式,原本是将所有文件塞进一个文件夹,由于14W的数量。。

阅读更多
Centos 7安装Transmission

最近这几天Kimsufi放货频繁,ks1经常有货,估计是这上个月的续费率不高,导致有人删机器吧,有初装费的机器随便这么丢真的好吗XD。

KS的机器虽然是#世界#最便宜的独服,但是由于国内去ovh机房的线路都是绕地球,所以难受飞机场的侵犯。而且是独服就不会有爱折腾的邻居出现,而且我还有台不错的德国机可以拿来中转,对我来说性价比还是不错的。

阅读更多