几段黄牛脚本

August 21st, 2016 Programming No comments

剁手族有一个共同特点,就是爱贪便宜,看到性价比高的东西就忍不住买买买。因此最痛苦的莫过于错过了期待已久的促销活动。黄牛也是一样,不搞个自动化脚本抢货,怎么能算是合格的黄牛?前段时间抢Kimsufi独服的时候,使用了第三方的监视网站,尝到了点甜头,加之自己在其他网站也有类似的需求,因此自己写了两段脚本,实现有货时实时推送手机通知,从此站在黄牛第一线!

先给脚本地址:
https://github.com/youran/yellowbull
分别实现了get和post方式的轮询。对应的服务是Kimsufi的独服和BudgetNode的VPS,很容易改造成对应其他服务。
因为使用了ES6[……]

Read more

域名已进入Chrome HSTS Preload List

August 11th, 2016 Security No comments

大概3个月前在hstspreload.appspot.com申请加入Chrome的HSTS Preload List,大概2个月前通过申请。刚刚Chrome自动更新到了52.0.2743.116,访问chrome://net-internals/#hsts发现本域名已经顺利进入Chrome代码。这下只要浏览器够新,即使第一次访问本站,也会直接使用https方式连接,不会从HTTP 301了。

更新:已进入Chrome,Edge,Firefox,IE的preload list。这下主流浏览器都涵盖了。没想到微软的动作还是挺快的,以为要IE/Edge的大版本更新时才会更新HSTS List[……]

Read more

Centos 7下部署kvm (qemu)

August 1st, 2016 Linux No comments

上周抢到了一台Kimsufi的KS-3C特价独服,i3-2130 CPU, 8GB内存, 2TB硬盘,月付8.99欧元。性价比非常高,终于不用和其他人挤在一起啦!唯一的缺点就是无论法国还是加拿大机房,对中国的延迟都太高了,普遍300ms往上。不过实际页面打开速度还不错,加了锐速后速度更上一层楼,而且全国ping超时也不严重,所以准备长期持有做站。

不过这个配置的独服,就建几个博客太浪费,但是只有一个IP,想挂机都不给力。正好手上还有几个小内存vps,于是想到了在独服这里开几个NAT vps,然后通过那几台小内存vps上的代理挂机。这里把我创建虚拟机(vps)的过程记录下来,供大家参考。[……]

Read more

部署Let’s Encrypt证书

May 18th, 2016 Security 9 comments

距离Let’s Encrypt进入正式版已经一月有余,恰巧自己有个域名需要申请SSL证书,因此尝试了一把。网上有很多第三方的自动化工具,但是个人感觉还是官方提供的比较放心,毕竟是安全证书相关。

Let’s Encrypt的逻辑是一次配置,后面全部自动化。他们提供了一个部署工具,certbot,用于申请及更新证书。用法比较简单,去https://certbot.eff.org选择你的web server和linux distribution,就会显示对应的操作步骤。

以本人习惯的Nginx + Centos7为例,先是下载certbot后赋予可执行权限(以下命令皆以root权限运行)[……]

Read more

A simple RESTful web service in nodejs (3)

April 2nd, 2016 Programming No comments

wget.js完成后,只剩下最后一步了:视频文件的转码与合并。ffmpeg的安装就不赘述了,我是根据ffmpeg官网上的教程一步步编译安装的。用yum或者apt-get方式应该也行,就是版本可能没有那么新。

这个进程的主要功能是把flv等格式的视频,转换成标准mp4视频,并且合并成一个文件。一般来说,flv的视频编码和mp4同是h264,而音频编码往往不一致。所以flv转mp4大部分情况下可以直接copy视频流,只需要转换音频流。像B站那种,经常flv连音频流也是aac的,那就更简单了,只换个container就行。

可以借用下面两张图片直观地说明一下:
flv2mp4
flv2mp4_convert

一开始其实想[……]

Read more

A simple RESTful web service in nodejs (2)

April 2nd, 2016 Programming No comments

书接上回。完成了server.js,这次轮到子进程wget.js了。wget.js比较简单,只是调用wget-improved module的方法,处理下message就行了。

值得注意的是从父进程(server.js)那里取得参数(父进程在fork时指定)的方法,以及向父进程发送event message的方法。
process.argv的第0、第1个参数是固定的,分别是”node”和当前进程的文件名,比如这里就是”node”和”./wget.js”。第2个参数才是从父进程传过来的自定义参数。

代码简单就不多[……]

Read more