记一次折腾过程(一)

记一次折腾过程(一)

十月 24, 2017

写在前面:

做安卓的都知道,安卓是归谷歌的。谷歌很多最新的好玩儿有趣的功能,第一时间对移动端的支持大部分也都是在安卓上。身为平常娱乐,有些东西可有可无,也就作罢。但是身为一名开发者,你经常要了解最新的咨询需要上官网,那么这个官网还不能访问,这种情况是不能容忍的。本文是我对这系列折腾过程的记录,当做一个对过去的总结。

Why?


整体软件环境

安卓的开源是便利的,但同样是危险的。当开发者发现安卓的各种可定制的功能时,同样也是对一名开发者或者说一个软件团队的技术与「道德」的考验。

常驻后台,相互唤醒。国内安卓的App市场里各种应用的审核并不像想想象中那么严,尤其是身为一名开发者后,发现国内环境的确没有Play Store上那种基于机器学习App检测系统更安全。

如果你可以可以看看QQ在Play Store上的功能要简约明朗很多,我想无论如何Play Store多多少少制约了一下现在这种软件的「店大欺客」的状态,什么微信必须给定位权限,支付宝必须要给电话拨打权限,否则就不让用。这相当有悖于谷歌的设计动态权限申请的原则。国内虽然也有一大堆「国人习惯」的第三方ROM来制衡这个混乱的生态圈,但这也给很多开发者带来了更多的适配兼容的问题。(´-ι_-`)

海外连接速度过慢

作为一个开发者,上到软件的下载,下到linux的代码仓,好多软件的更新支持都需要一个稳定速度的带宽支持。说到这点,就好比我刚开始用AS开发,一个几百兆的gradle文件愣是让我下载了半天时间,除了学校当时网速有点低之外更主要还是本身对海外节点的访问速度。

You Can Learn More And More

我只是一个纯粹的喜爱生活,热爱技术的人,好多东西明明应该是「无害」的,就好比我想看个谷歌IO大会的直播视频,却难以实现。好在谷歌在国内的影响力又渐渐有了些起色,虽然现在也有腾讯的同声转播,但是总感觉哪里有点不一样。

What?


最简单的人们听过最多的也就是VPN,这个简单粗暴和正常软件的使用没什么太大难度。很多时候我们只是使用了一个服务商提供的已经设置好的「工具」,来直接使用,多数的直接就是提供商自己的出的软件,定制化不是很高。理论上和SS速度不应该差距太多,但是实际使用中稳定性,速度体验都有很大折扣。当然在企业里VPN这种东西还是很方便的,你可以远程访问内网环境来提交你的文件管理日常等。

我选择的是Shadowsocks,简称SS。

简单理解的话,Shadowsocks是将以前通过SSH创建的Socks5协议拆开成Server端和client端,下面这个原理图能简单介绍其翻墙原理,基本上和利用SSH tunnel大致类似:

  1. PC客户端(即你的电脑)发出请求基于Socks5协议跟SS-Local端进行通讯,由于这个SS-Local一般是本机或路由器等局域网的其他机器,不经过GFW,所以解决GFW通过特征分析进行干扰的问题。
  2. SS-Local和SS-Server两端通过多种可选的加密方法进行通讯,经过GFW的时候因为是常规的TCP包,没有明显特征码GFW也无法对通讯数据进行解密,因此通讯放行。
  3. SS-Server将收到的加密数据进行解密,还原初始请求,再发送到用户需要访问的服务网站,获取响应原路再返回SS-04,返回途中依然使用了加密,使得流量是普通TCP包,并成功穿过GFW防火墙。

How?


各平台位置

(注: 这里的SS和SSR还是有区别的 不过本篇暂且不说。)
找到一个稳定的提供商,根据节点信息来填写后连接就好。而且二维码的加入更是降低了用户门槛,很多时候只需要点击客户端的扫描二维码就可以啦!

你可以在小伙伴的客户端或者提供商页面找到二维码,其实就是包含我所填入的这些信息的一段内容。

然后我们直接点击扫描屏幕上的二维码就会拿到识别信息了。如果没有的话,手动填写即可。(这里mac客户端是SS那么没有混淆和协议选项的情况下先不写。或者有的使用的是启动参数,-O -o等)

最后我们可以选择服务器来切换不同的节点,同样可以开启全局。也可在需要时开启。

然后我们就可以愉快的看着我们gradle下载文件的速度变快了不少。

当然还有彩蛋

这是折腾过程的第一部分,没有什么复杂的东西,如果你要是动手实现的话,估计几分钟十几分钟就能搞定。当然我们们可以做的还远不止这些。

为软件设置代理

  1. 所在的地方大局域网屏蔽了一切和音视频相关的内容网站和信息,连网易云音乐都不让听。小伙伴们可着急了,音乐是动力啊有木有。
  2. 全局代理虽然简单暴力,让你直接达到直连的效果。但是你会发现会有很多弊端:访问国内网站时候我们仍然会走这个代理模式,这就导致了速度变慢,而且很多提供商每个月的流量也都有限。虽然正常使用下流量基本够用,但是也是浪费了不必要的资源。

在运行客户端后我们开始,选择设置中为局域网开启代理。

然后在网易云音乐里的设置里找到下载,填写好本地地址和端口,点击测试发现代理可用,然后重启软件,发现每日推荐又活过来了。

以此类推,你会发现好多软件都可以这样设置代理。达到节约流量和不影响你日常的网速效果。

更灵活的配置方式 PAC

代理自动配置(英语:Proxy auto-config,简称PAC)是一种网页浏览器技术,用于定义浏览器该如何自动选择适当的代理服务器来访问一个网址。
一个PAC文件包含一个JavaScript形式的函数“FindProxyForURL(url, host)”。这个函数返回一个包含一个或多个访问规则的字符串。用户代理根据这些规则适用一个特定的代理器或者直接访问。当一个代理服务器无法响应的时候,多个访问规则提供了其他的后备访问方法。浏览器在访问其他页面以前,首先访问这个PAC文件。PAC文件中的URL可能是手工配置的,也可能是是通过网页的网络代理自动发现协议(WPAD)自动配置的。

简单来说就是国内走国内,国外走代理。
你可以在客户端找到这个选项,我们可以设置国内不走这个节点,国外自动走代理。

这里我用了一个好像不是最优不过也还好:

http://jiasd123.oss-cn-hangzhou.aliyuncs.com/list.txt

同样我们可以自己通过JS编辑规则,来实现更高度的定制化。语法规则和具体,可以查阅这几个参考资料:

我们还可以通过软件来直接在Chrome上集成这种自动切换的插件。

比如:proxy-switchyomega

跟着教程走一遍,你会发现PAC的神器之处。

最后


祝下载不再缓慢,祝git把把顺畅。
当然我们只是走了第一步,还有很多可提升的空间,后续我会再写两篇。