無標題文檔

网易云音乐接口的简单分析

由于公司网络的关系,在线听音乐经常会被断断续续,于是考虑批量将音乐(高清)下载到本地。同时,由于熊孩子的缘故,在自己的音乐榜单上「小苹果」等歌曲一直在前排,显得很没有「格调」,于是就萌生了折腾云音乐接口的想法。

网易云音乐的接口相对而言还是比较简单,尤其是大部分前端与服务器端通信的逻辑都已经在 core.js 里面,虽然加了压缩但是没有混淆因此还是很好去处理和理解。

访问云音乐接口每次都需要带个名为 csrf_token 的 GET 参数,这个参数很好找就在 Cookie 里面,而且还是持久化的。

剩下的两个参数大部分都是 POST 过去,分别名为 params 和 encSecKey,里面的字符串经过 encodeURIComponent 处理过。

云音乐请求的加密方式

加密和解密的方法还是在 core.js 这个文件里面能够找到,AES CBC 加密,客户端自己生成 Pair 。两个加密解密的方法都暴露在全局作用域下,分别名为 window.asrsea 以及 window.ecnonasr

部分的接口,例如 feedback/weblog 是没有做任何重复请求处理的,换句话说可以刷。上面说到 csrf_token 其实是持久化的,也没有来源判断等,因此拿到 Cookie 以后就可以自己构造请求。

不过话说回来网易的平台设置做得的确财大气粗,乃至多点并发去做请求都能撑得下来(估计是我的小水管还不够人家的零头)。

顺便提一句,再深入研究下其实可以发现非会员也可以下载收费资源,这里不铺开讲了。

总结下一些看起来是「大道理」的心得:

  1. csrf_token 这些参数应该和时间和请求次数挂钩,更不应该加入到 Cookie 里;
  2. 客户端和服务器端的加密一直是安全方面讨论的主要课题,我的倾向是轻客户端重服务器端,不要把所有的逻辑都写在客户端中;
  3. 前端脚本代码的打包方面尽可能的不要污染全局空间,尤其是框架方面的代码;
  4. 服务器端应该对用户异常行为作出判断,例如业务方面用户频繁下载以及标记打星是否合理;
  5. PS,网易云音乐考虑下 WebSocket
  6. 查找和 Hook 网络接口这块可以从请求方法入手,通常现在端架方面请求都会放在一个方法中处理;
  7. 有点废话,抓取的时候使用 HTTP Keep-Alive 头能够明显的加快请求速度;
  8. 可以考虑多个 IP (代理)去抓取数据,以免实际地址被服务器 Block;
  9. 实际情况中需要考虑的外部因素有很多,例如尽可能的在预算范围内购买足量的存储空间…;
  10. Charles 很好用,这钱花得值…

最后,顺便刷个榜开个玩笑捣蛋下。

云音乐刷榜

-- EOF --

卡西欧 GW-M5610 手表屏幕改反显

当时购买这个手表就是为了好打理,六局电波、太阳能加上两百米的防水等,基本上不用担心它什么时候会不工作。

使用了一段时期以后,感觉到有些审美方面的疲劳,正好又看见了网上电子手表正显改反显的教程,发现不难于是就自己动手改个反显换换口味。

http://pic.yupoo.com/feelinglucky/EBjWZ3jY/medish.jpg

先来看下改之前的样子,其实正显有个好处就是比较清晰(这是在我改了反显以后对比得出的),如果不折腾用户其实真心还是保持原样的较好。

http://pic.yupoo.com/feelinglucky/EBjWTp9a/medish.jpg

GW-M5610 这款手表其实非常好拆解,拧掉四颗螺丝以后就可以打开盖子和岔开机芯了。抱歉过程因为拆的过程太过于顺利,所以就没拍下来。

http://pic.yupoo.com/feelinglucky/EBjWEC7c/medish.jpg

http://pic.yupoo.com/feelinglucky/EBjWF5GA/medish.jpg

然后就是撕开原有机芯显示屏上的偏光片,这里有个小技巧就是撕开原有的偏光片可以用角落用刀片斜切慢慢起开,然后就很好撕开了。至于原有偏光片残留的胶,可以用风油精蘸在棉花棒上擦拭去掉。

而至于哪里去得到新的偏光片呢?本人这块是原有液晶显示屏上剩下的,刚好今天能派上用场。正显改反显的原理很简单,其实就是将偏光片旋转一定的角度,就可以看到效果。

http://pic.yupoo.com/feelinglucky/EBjWFvtq/medish.jpg

依照原样大小贴回去即可,记得一般偏光片犹如手机贴膜一样,上面还覆盖有一层保护膜,使用前将其揭掉即可。

http://pic.yupoo.com/feelinglucky/EBjWGcPW/medish.jpg

按照原步骤装回去即可,这里友情提示下为了保证防水效果,最好再涂抹一层手表防水膏(别问我怎么会有这玩意)。

http://pic.yupoo.com/feelinglucky/EBjWOVOe/medish.jpg

涂抹完防水膏以后,需要将手表泡水里测试一段时间,以求防水效果生效从而能够长期使用。

http://pic.yupoo.com/feelinglucky/EBjWG0vM/medish.jpg

这是最终上手的效果,相比原先的正显而言多了分个性,而少了分显示效果。至于最终是正显好还是反显好呢?有句话说得没错:

「正显是给自己看的,反显是给别人看的。」

下面是些参考连接,想动手前可以参考下:

  1. http://www.iwatch365.com/thread-17184516-1-1.html
  2. http://post.smzdm.com/p/224298/

— EOF —

升级和改造 NAS 小记

自从多年前开始使用 NAS 存储和备份数据,就慢慢得养成了习惯越来越离不开它了。我使用的是群晖低端的 212J,由于仅仅是备份数据没有离线下载等需求,使用至今都没有出现过性能方面的顾虑。

这次考虑折腾 NAS 是从一开始升级硬盘说起。

选择硬盘

因为预算的问题,一直没有购买新的硬盘,使用的是原先移动硬盘拆下来的两块 320g 笔记本硬盘。

时光推进, 320g 的容量越来越明显感觉到捉襟见肘,加上原有的硬盘使用时间也比较长(从 09 年至今),因此更换硬盘的想法就提上了心头。

https://files.gracecode.com/2014_11_03/1415001492.jpg

https://files.gracecode.com/2014_11_03/1415001505.jpg

根据目前的行情,还是考虑购买了两个不同品牌的监控硬盘,分别是 希捷(Seagate)的 SV35 系列 和 西数(WD) 的 AV-GP 系列,容量都是 2T。

选择不同个品牌,是因为考虑同个品牌可能会同一个批次出现一样的问题。同时,不选择西数的红盘是因为 AV-GP 系列性价比稍微更高些而已(虽然只有 20 大洋)。

https://files.gracecode.com/2014_11_03/1415001468.png

后记:新的硬盘安装进去以后,发现工作温度希捷的稍微比西数的要高些。不过两者硬盘性能似乎没有区别,组 Raid1 运行相互之间不会有谁拖谁的后腿之说。

硬件&改造

NAS 属于不折腾的那种硬件,稳定第一。但由于通常都是放在不起眼的地方,灰尘和散热都是我所担心的,毕竟宝贵的数据全部在这小东西的肚子里。

群晖 212J 的原有风扇是 Y.S.Tech
的,从购买至今使用起来一直都很勤勤恳恳,对它唯一诟病的地方就是声音和振动都有点大
。思前想去,毕竟风扇是 NAS 唯一的主动散热设备,所以还是咬咬牙从淘宝上购买了
SANYO DENKI 的 9S 风扇(俗称「9S」)

这个风扇相信玩家都会认识,无论从风噪还是可靠性来讲都比原先的风扇好太多(当然价格也是原有风扇的两倍)。

https://files.gracecode.com/2014_11_03/1415001521.jpg

同时购买了快散热片加装到了原有主板的主控芯片上,其实这部没多大必要但装了也总比没有要好。

https://files.gracecode.com/2014_11_03/1415001568.jpg

https://files.gracecode.com/2014_11_03/1415001634.jpg

顺便给风扇加装了块滤尘网,同时在各个出风口上用双面胶粘贴了防尘垫,用于一般基本的防尘。最后,在安装硬盘的螺丝上加装了橡胶垫子,这里再次感谢下卖家的小心思,替我考虑得很周到。

经过这些步骤以后,重新合上盖子的时候感觉密封性更好了,希望能够使用得更久些。

迁移数据

恢复原有 Raid1 盘的内容并不轻松,我没有使用 Synology Hybrid RAID幸好没用,这玩意很坑),原先认为使用 USB 硬盘盒接上即可读取,发现行不通。

搜索了下,后来才知道群晖的 Raid1 是 Raid1 。于是将原先 NAS 的其中一块硬盘挂在 Linux 下。

先安装必要的软件

apt-get install mdadm lvm2

安装完成以后查看硬盘的分区

fdisk -l /dev/sdb

https://files.gracecode.com/2014_10_31/1414750074.png<br />

发现有几个分区块,先测试下最大得分区块

mdadm --examine /dev/sdb5

https://files.gracecode.com/2014_10_31/1414750097.png<br />

发现的确是软件 Raid1 分区,接下来映射成块设备

mdadm -A -R /dev/md9 /dev/sdb5

其实到达这一步,使用其他分区格式的可以直接使用 /dev/md9 设备 mount 到系统了,但是群晖使用了 LVM 分区,因此还需要多几个步骤。

vgscan && vgchange -ay vg1

激活逻辑卷,然后系统会提示你卷下有几个分区,然后用这些映射设备 mount 即可。

mount /dev/vg1/volume1 /media/hd

https://files.gracecode.com/2014_10_31/1414750111.png<br />

然后在 NAS 上开个 NFS 分区也一并 mount 过来就可以拷贝文件了。

后来发现有网友直接使用 NAS 的 Raid1 的恢复迁移数据,早知道这个方法会方便很多。

下面是些参考资料:

Tips

差不多是最后了,数据方面的迁移和保存毕竟是很谨慎的事情,下面总结下小的 Tips 也算是经验总结了。

接下来考虑是否购入台 UPS 将 NAS 接入到不间断电源中,出于预算考虑估计还得缓缓 :^)

-- eof --

更换倒车摄像头小记

可能是由于夏天雨季雨水多的缘故,原车的倒车影像开始非常的模糊,然后有天就突然的不工作了。本着省钱的心理作怪,决定先自己拆开看看到底是什么问题。

拆开摄像头很简单,原先就是使用卡扣卡上去的,稍微将卡扣掰下摄像头就能扯出来了。然而,看见原车摄像头腐蚀的情况,看来更换是难免的了。

因为摄像头的布线是隐藏在车的保险杠中的,因此需要拆除车子的保险杠,于是这工程量就大上去了。好在两厢车的保险杠还算好拆,后备箱的工具也够用。

因为同时还有倒车雷达的布线,所以暂时将倒车雷达关闭布线用胶布缠绕起来。为了安全起见防止别人追尾,顺手加上了个告示(有人说这是「此地无银三百两」)。

过了几天,在万能的淘宝上拍到的新摄像头到了。考虑到晚上视线不好的缘故,特地买了升级版本带红外的。

为了防止以后类似情况的发生,因此给裸露金属以及接线的部分加注了玻璃胶。

原车的布线由于已经安装好,更换摄像头也就是更换原来的线头,因此干活的过程中就没有记录下来。

接头部分为了加固我采用了焊锡点焊,同时使用防水胶布缠绕的办法。

这是晚上使用红外线摄像头的效果,可以看见外部环境已经丝毫没有任何灯光了,但是倒车摄像头还是很清晰。

至于价格方面,红外摄像头比普通摄像头贵个几十元钱,但对于安全和效果而言还是值得的。

顺便顺手给另外一侧的牌照灯也换成了 LED 的,这样子更耐用一点。稍微有点不尽如人意的地方,就是 LED 晚上牌照灯似乎有点太亮。

总的来讲更换倒车影像摄像头难度并不高,但是需要卸下后保险杠是个脏活累活。

下面列下需要用到的材料以及所购买的费用:

-- EOF --

WiFi-Duino 使用小结

年前的时候曾经使用 Arduino 做过个环境检测的小工具 ,总体来说效果都还可以。

后来刚好在点名时间上看见了个名叫
WiFi-Duino 的项目,大体来讲它就是
Arduino + Wifi 模块的集成控制板,刚好合计了下控制板加上 Wifi 模块的价格其实也差不多,因此就尝试购买了块。

不过,从十二月份下单到三月份我几乎都快忘记了这个事情,因此在前几天收到个莫名的邮包感到些意外,打开以后发现原来是它。

前言

邮包里面的内容很简单,除了一个用塑料袋包装的 WiFi-Duino 控制板以外别无他物。

或许是因为量产不多的缘故,硬件做工方面也是中规中矩,没有给人太多的惊喜。

我收到的是红色的 PCB 印刷电路板,和官网上图示的黑色电路板还是有些不同,但其他方面是一样的。

唯一感到让人不舒服的就是,电路板背面的触点没有用焊锡固定。虽然测试的情况上看并没有影响使用,但如果我想在生产环境使用我还是会考虑重新用焊锡固定这些触点。这块也想建议制作方能够注意下。

总得来讲板子可以做到很薄(我讨厌那厚重的电源插口),在一般的用电负荷下除去电源插口直接使用 Micro USB 口子供电,达到控制板的最薄应该不是什么问题。

基本使用

总的来讲,从硬件方面上说 WiFi-Duino 这块控制板可以认为是 Arduino
Leonardo
外加一块 Wifi 网络模块
,所以将 Arduino IDE 中控制板的类型设置为 Arduino Leonardo 以及选对响应的端口即可使用。

WiFi-Duino 的官方网站 可以获取相应的文档和示例代码。总的来讲代码放面还是比较清晰,同时可以根据自己的实际应用情况来精简类库。

可惜,唯一的不足就是 git 库中没有相应的 example 文件,因此你如果想要使用还是需要
自己从官方网站上复制粘贴。

将 WiFi-Duino 作为热点模式连接以后信号还是比较稳定,在十米范围内手机接收的信号强度都还是满格,一般家庭使用环境下应该已经足够满足。

后言

作为在校学生设计的作品个人觉得 WiFi-Duino 已经超出期望要求,想必以后在硬件做工、
软件类库等方面还需要进一步的完善下。

如果说 Arduino 降低了单片机开发的门槛,那么这块 WiFi-Duino 控制板将会降低
Arduino 无线网络连接解决方案的门槛。

不过,恐怕唯一的阻碍就是 169RMB
的价格在其他同类产品面前还是稍欠些竞争力,尤其是面对学生这样的人群。如果成本再降
下来一点,同时加大其他方面的竞争力,想必应该会有更好的前景。

无论如何,作为在校学生组成的团队能够克服或许诸多问题推出这样程度的产品,我还是满怀期待以及会继续支持他们以后的产品的。

-- eof --

我的照片

嗨!我叫「明城」,八零后、技术男、伪苹果粉、微软无脑黑、宁波佬,现居杭州。

除了我的博客,同时也欢迎您访问我的 GitHubTwitterInstagram 主页。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 其实无所谓叫什么名字,因为我曾经为这个名字伤透了脑筋。最后想到的这个名字都没啥特别的,说到 底是因为我实在给它不了个非常酷的名字。

如果您想联系我,可以发我邮件 echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d

注:本站点所持观点仅代表个人意见,不代表所服务公司的立场。

文章

项目

微信公众号