最后更新:2019-08-08 14:11:29 星期四

更新日志

2019-08-08 14:11:29 星期四:
终于还是……一个令我又高兴又悲伤的消息。已经有人做出了比我更优秀的成果,我已经不需要继续抱残守缺了。本项目(利用本地代理服务器的方法)停止维护,谢谢各位。
2019-08-05 23:12:52 星期一:
1.添加了更新日志
2.文章开头的注意改为(不)温馨提示
3.方案第6条添加HttpCanary用户手册的链接
4.文末添加了注意事项
5.修改了最后部分的内容使叙述更加严谨
2019-08-05 20:02:21 星期一:
Initial release

一点也不温馨的温馨提示

  1. 这篇教程并不适用于新手/小白,而且如果你不爱折腾,那么显然花钱买个梯子是最佳选择
  2. 前面说了一些废话,如果你不想看,可以直接跳过背景和思路部分

背景

作为一个死宅,再没有什么事比晚上睡前刷一波P站更令人放松了。以前P站没有被墙的时候我经常一晚上刷几百上千张图。虽然后来遭到了DNS污染,但这都是很好解决的问题。再到后来,直到2018年9月13日,GFW改进了封锁策略,原有的hosts方法失效。
很快,9月17日,Mashiro发布了使用NGINX反向代理访问P站的方法Github页面)。这使我非常振奋,虽然梯子我从来都不缺,但我从未放弃过使用免翻墙的方法访问P站。
在那之后,我就一直在尝试将这种方法移植到手机上。

思路

我使用的是安卓系统(iOS我没有,以后也没有相关的计划,有能大佬可以接手),而安卓系统是基于Linux内核的。从某种程度上来说,安卓可以以Linux的方式操作。
以此为基础,我开始在我的红米NOTE 4X上实践。因为刷了LinageOS并且有ROOT权限,所以整个过程非常顺利。已ROOT用户可以参照以下方法。先用Linux Deploy部署一个你用着顺手的系统(这里我用的Debian),安装nginx,部署配置文件,改hosts,装证书一气呵成。经测试,所有功能全部可用。这至少证明我的思路是可行的。
在这套方案中,NGINX是必不可少的核心部分。正常情况下,NGINX需要至少绑定443端口,但对于未ROOT的设备,你根本不可能获取1024以下端口的使用权。想要解决这个问题思路很简单,更换其他端口然后将相关数据转发到这个端口即可。
说起来容易。我在这上面卡了几个月的时间,始终没有找到一种行之有效的方法。在今年(2019)2月,我在Github上提出了使用路由器进行转发的思路。但我并不满足于此,因为这种方法只能在自家使用,在使用移动网络和公共WiFi时明显不能用。
直到最近,在无意间我摸索出一种方法。即在本地搭建一个传统的代理服务器来进行数据转发。

免ROOT方案

  1. 首先,下载我提供的文件,并解压到内部储存根目录,确保pixiv_nginx文件夹中有nginx文件夹。
  2. 安装所有apk。
  3. 打开Servers Ultimate,点Settings,在BACKUP中找到IMPORT,LOAD FILE,打开我提供的pixiv.servrsult,右上角▶导入配置。
  4. 打开Termux,等待初始化完成后,依次执行以下命令
pkg install nginx
cd ..
cd usr/etc
cp /sdcard/pixiv_nginx nginx -rf
  1. 安装cacert.pem证书。
  2. 打开平行空间,添加pixiv客户端。具体原理参照HttpCanary用户手册
  3. 在WiFi环境下,打开WiFi高级设置,添加手动代理127.0.0.1,端口10000。移动网络的设置随手机的不同而不同,这里以三星S10+为例,设置→连接→移动网络→接入点名称(APN),点开你当前选中的配置,记下所有配置,然后点添加,将所有配置照抄一遍,再添加代理服务器,同上。不用时记得改回来,以免影响正常上网。
  4. 使用时在Servers Ultimate中点Servers,点▶启动转发服务器。打开Termux,输入nginx启动nginx服务器。在平行空间中启动客户端即可使用。

注意

1.正如上文所说,目前我没有iOS方案,而且以后也没有相关计划。所以苹果用户还请另寻他路。
2.虽然百度很不良心,但一旦出现问题还请首先百度。实在解决不了再来提问。而且我并非专注于这个项目的,只是出于爱好,所以回答和更新可能不及时。

最后

非常感谢Mashiro,全网一直在积极研究pixiv翻墙并且做出成果的好像只有他一个人。而我所做的只是在他的基础上做了一点微小的工作。


夕暮れの星空も好きですか。