这个月主要在搞两件事,其一是:https://github.com/spin6lock/pydnsproxy,其二是一个 bt 客户端,用来搜索磁力链接,下载种子的,还没搞好。

除了 bug 修复,就是给 pydnsproxy 添加了 http dns 的解析方式,这种方式的优势,可参考企鹅的 【鹅厂网事】全局精确流量调度新思路 -HttpDNS 服务详解 。简单来说,就是抛开原有的 dns 协议,直接提供一个 http 接口,给出域名,返回对应 ip。额外参数还包括请求 ip,可以根据请求 ip 的不同解析出不同的 ip 地址。暂时看来,没有受到墙的干扰,可以一用。说到底,其实需要的是一根管道,可以顺利到墙外而不受干扰。具体的解析方式,反倒是其次了。像企鹅这种大公司,维持一条稳定的加密通道毫无问题,于是顺便利用其 httpdns 来避免投毒污染了。实现的时候,有考虑过 tcp 连接池的问题,貌似 urllib2 没有这么高级的功能,只有 urllib3 才提供 PoolManager。但是,实测发现,httpdns 的查询也就在 20ms 附近,虽然比缓存的 5ms 要慢一点,但完全可以接受,这个值得再观察一下。