QQ 音乐外链解析

起因大概在五天前,忽然发现一直在用的网易云解析不能用了,去作者的项目查看才知道原来是网易云更换了新的接口,旧接口的请求现在统一返回 403。于是乎,便萌生了自己写一个接口的想法。     阅读全文
WincerChan's avatar
WincerChan 3月 07, 2018

Web 性能优化(一)——使用 localStorage

localStorage 的意义为了针对我的网站提供更好的浏览体验(或者说更接近原生 App 的用户体验),在之前我就已经开启了 Server Worker 技术,针对离线或者网速慢的情况下改善用户体验。但只有少数几个浏览器支持 (Chrome、Firefox、Opera),对目前手机端用户数最多的 QQ 浏览器、UC 浏览器却没有支持,也就是说该方法针对 QQ 浏览器和 UC 浏览器并没有什么实际优化。     阅读全文
WincerChan's avatar
WincerChan 11月 30, 2017

构建一言 API 踩坑记录

前言最初是在手机上一个叫「一言」的 App 接触到 Hitokoto,一见倾心啊。之前我看书时遇到写的不错的句子就喜欢摘录下来,在有自己的博客之后,本想是单独写一篇博文来存放,后来分析了 NexT 的布局后,就想到在侧栏底部可以加上一个单独的模块。 最开始,是使用别人的 API,后来觉得不太好,有诸多限制,而我又没有主机,于是就自己用 Javascript 写了一个本地的脚本。后来发现这样也不太好,因为本地的脚本每次加载势必要加载存放 Hitokoto 的 JSON 文件一次,当记录越来越多时,会消耗不必要的资源。毕竟每次只需要加载一条。     阅读全文
WincerChan's avatar
WincerChan 10月 30, 2017

爬虫模拟登录之一般性解决方法(Cookie)

前言前几周写了一篇文章,介绍了如何利用 post 方法来验证登录的问题,我也是一直在使用此方法登录豆瓣爬取一些信息,可是前两天突然就不能用了。我也再次查看了豆瓣的源代码,确认了豆瓣的验证信息并没有发生改变,但就是一直登录不上去,我猜想到可能是这个方法行不通了,于是我就换了一个思路:之前的思路是需要将 post 提交的表单数据保存在一个 session 的实例中,然后调用这个 session 实例的 get 方法就可以使用之前保存的数据。 而现在这一方法失效了,我猜想就是 post 方法提交数据这一步出了问题。那么就换一个思路,直接将服务器返回的数据存入 session,那么这个数据具体是什么?从哪儿来呢?这就是这篇文章所要谈到的。     阅读全文
WincerChan's avatar
WincerChan 8月 31, 2017

爬虫模拟登录

前言 有时候就在想,要是所有的网站对爬虫友好该多好。 当然这是不可能的:网站重要的数据往往就是一个产品的价值所在,如果被我们轻松的获取,这自然对网站经营者来说是一种损失,所以就有了以下各种策略去阻碍爬虫: User-Agent 检测 帐号及 Cookie 验证 验证码 限制 IP 次数或频率 这篇文章主要来说说如何解决验证码问题。     阅读全文
WincerChan's avatar
WincerChan 8月 13, 2017

使用 Service Worker 优化网站

静态博客的内容是很适合用缓存来加速访问的,除了采用常见的 CDN 加速和压缩博文等方法,通过客户端也可以实现加速访问,本文介绍的是「服务工作线程—— Service Worker」。关于 Service Worker 的具体介绍见这里。本文主要需要的是它的离线加载的特性。 启用 Service Worker添加注册代码位置需要在网站的根目录添加,这样才能保证接管整个网站的全部资源。     阅读全文
WincerChan's avatar
WincerChan 7月 25, 2017

Python 实现多线程下载器

前言我为什么会想到要写一个下载器呢,实在是被百度云给逼的没招了,之前用 Axel 配合直链在百度云下载视频能达到满速,结果最近两天 Axel 忽然不能用了,于是我就想着要不干脆自己写一个吧,就开始四处查询资料,这就有了这篇博客。 我假设阅读这篇博客的你已经对以下知识有所了解: Python 的文件操作 Python 的多线程 Python 的线程池 Python 的 requests 库 HTTP 报文的首部信息     阅读全文
WincerChan's avatar
WincerChan 7月 19, 2017

导出 QQ 聊天记录

前言从 2013 年开始,手机 QQ 就已经不支持聊天记录的导出功能了(但是群聊的记录还是可以导出),目的当然是为了推广超级会员(超级会员的聊天记录有 2 年漫游时间),而不想给腾讯送钱的我,就只好自己想办法了。正好到暑假了,有时间可以钻研一下这方面了。     阅读全文
WincerChan's avatar
WincerChan 7月 01, 2017

线程创建两种方式的比较

线程创建的两种方式继承 Thread 类class DemoThread extends Thread{ ...... @Override public void run(){ ...... } } DemoThread dt = new DemoThread(); dt.start();     阅读全文
WincerChan's avatar
WincerChan 6月 12, 2017