iPhone/iPad 不越狱安装旧版程序

前言

软件版本迭代是会带来新的功能和 BUG 修复,为给用户带来更好的使用体验,我也是乐于尝鲜的性格,所以在软件推出发布新版本时都会及时更新,但用户体验其实是一个玄学的话题,有时并不能给你带来更好的体验,在 iOS 上,由于苹果商店严格的管理机制导致我们在升级后,想要回退到之前版本变得十分困难。

虾米音乐升级到 6.0 版本之后,改变很大,作为一位老虾米非常不适应,所以就瞄准了 6.0 之前的最后一个版本:5.9.4。

解决办法是在 iTunes 下载程序时,使用抓包工具对与苹果应用商店服务器之间的请求进行分析,通过修改下载请求中程序版本识别序列号来下载旧版本。

准备

网上较多的解决办法是使用 Fiddler+iTunes 是在 Windows 平台,因为我只有 Mac ,所以用Charles 代替 Fiddler,这里需要注意的是iTunes的版本,在笔者写这篇教程的前一天 iTunes 更新到12.7,在 12.7 中有一个很大的变化移除了 App store ,所以请使用低于 12.7 版本的 iTunes 。

Charles 安装

对于 Charles 版本并没有特殊要求,我这边是通过brew安装,你也可以到 Charles 官网下载安装, Charles 是需要付费的软件,但是有30天免费使用期限,如果你有长期使用打算,建议购买正版授权。

Charles SSL证书导入系统

从 Charles 中导出证书文件

在 KeyChain Access 中导入证书

选中导入的证书,然后右键选择 ‘Get Info’ ,设置证书信任状态

“虾米音乐” 的三次下载

第一次下载

打开 Charles ,开启监听,然后使用搜索虾米音乐,点击 Downloads 按钮。

点击下载后,在 Charles 会出现监听到信息,找到一条 ‘p[xx]-buy.itunes.apple.com’ ,其中 xx 是一个随机的数字,选中它,然后右键菜单栏中勾选 ‘Enable SSL Proxying’ 和 ‘Breakpoints’ 。设置完成后,在 iTunes 下载中,清理下载记录。

第二次下载

重新搜索虾米音乐,并点击下载按钮,这时 Charles 会弹出窗口,然后在弹出窗口的右下三个按钮中选择 ‘Execute’ ,这一步是我们请求服务器,紧接着出现的就是服务器给我们的响应,然后选择 ‘Edit Response’ - ‘XML Text’ ,然后向下滚动找到下图中的部分,这里是所有虾米音乐的版本的序列数字,但是这里没有办法直接看到版本号,越大的数字版本号越新。这里可以通过在手机 App store 中查看软件的版本记录,找到大概要回退多少个版本,然后数字从大到小找个半个序列数字记录下来,然后在下面三个按钮中选择 ‘Abort’ ,这时 iTunes 会弹出一个报错窗口,关掉即可。

第三次下载

再次重新搜索虾米音乐,并点击下载,在这次Charles弹出窗口中我们需要直接修改 ‘Edit Requset’ - ‘XML Text’ ,将如下图中的 ‘appExtVrsid’ 对应的值修改为,我们上一步中记录的序列数字,然后就一直在每次弹出选择时,选择 ‘Execute’ ,直到下载完成记录。

验证

下载完成后,你的 iTunes App Library 中已经有了一个虾米音乐,连接上你的手机,将其安装到手机上即可,下图是我安装后的版本截图。

在Linux终端使用SSR服务实现科学上网

昨天在群内看到有朋友在询问如何在Linux终端内使用SSR来实现科学上网,所以抽空研究了下在Linux中如何使用,本文参考了OtokazeDjango 两位的博客,文章链接在博文最后;SSR服务提供商依然采用了ssGlobal,在Google的过程中,找了不少解决方案,这里仅做一种简单整理,实验操作系统有CentOS 7.4 & Ubuntu 16.04.3。

ssr 代理服务

下载
1
2
3
4
5
6
# 需要本地git 环境
yum install -y git
git clone https://github.com/SAMZONG/gfwlist2privoxy.git
cd gfwlist2privoxy/
mv ssr /usr/local/bin
chmod +x /usr/local/bin/ssr
安装配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@localhost ~]# ssr install
Cloning into '/usr/local/share/shadowsocksr'...
remote: Counting objects: 5490, done.
remote: Total 5490 (delta 0), reused 0 (delta 0), pack-reused 5490
Receiving objects: 100% (5490/5490), 1.71 MiB | 410.00 KiB/s, done.
Resolving deltas: 100% (3799/3799), done.

[root@localhost ~]# ssr config # 配置文件路径 /usr/local/share/shadowsocksr/config.json
{
"server": "0..0.0.0", // ssr服务器ip
"server_ipv6": "::",
"server_port": 8080, // ssr服务器端口
"local_address": "127.0.0.1",
"local_port": 1080,

"password": "123456", // 对应password
"method": "none", // 这里对应SSGlobal配置中的Encryption
"protocol": "auth_chain_a", //对应protocl
"protocol_param": "",
"obfs": "http_simple", //对应obfs
"obfs_param": "hello.world", //对应obfs_param
"speed_limit_per_con": 0,
"speed_limit_per_user": 0,

"additional_ports" : {}, // only works under multi-user mode
"additional_ports_only" : false, // only works under multi-user mode
"timeout": 120,
"udp_timeout": 60,
"dns_ipv6": false,
"connect_verbose_info": 0,
"redirect": "",
"fast_open": false
}
启动/关闭
1
2
ssr start
ssr stop
卸载
1
ssr uninstall # 这里操作会删除/usr/local/share/shadowsocksr

以上,本地监听服务已经配置完成了,在填写的过程中,要注意你的本地监听地址和监听端口,默认是127.0.0.1:1080,如果你修改了设置,那么在后续配置中也要配合修改。

Privoxy 配置

首先,需要安装privoxy

CentOS 7.4
1
2
yum install -y epel-release
yum install -y privoxy
Ubuntu 16.04
1
apt install -y privoxy
全局模式

代理模式同其他平台上方式,将所有http/https请求走代理服务,如果需要全局代理的话按照如下操作即可,如果要使用PAC模式,请跳过此部分。

1
2
3
4
5
6
7
8
9
10
# 添加本地ssr服务到配置文件
echo 'forward-socks5 / 127.0.0.1:1080 .' >> /etc/privoxy/config

# Privoxy 默认监听端口是是8118
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy=localhost

# 启动服务
systemctl start privoxy.service
PAC模式

使用GFWList是由AutoProxy官方维护,由众多网民收集整理的一个中国大陆防火长城的屏蔽列表,这里感谢@Otokaze 为我们提供了转换shell自动转换脚本,为了方便修改,我fork了这个项目,将这篇教程所用到的资源进行了汇总,你可以在最开始git clone的目录中找到执行脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~]# cd gfwlist2privoxy/
[root@localhost gfwlist2privoxy]# ls
gfw.action gfwlist2privoxy README.md ssr
[root@localhost gfwlist2privoxy]# bash gfwlist2privoxy
proxy(socks5): 127.0.0.1:1080 # 注意,如果你修改了ssr本地监听端口是需要设置对应的
{+forward-override{forward-socks5 127.0.0.1:1080 .}}

=================================================================

"cp -af /root/gfwlist2privoxy/gfw.action /etc/privoxy/"

[root@localhost ~]# cp -af gfw.action /etc/privoxy/
[root@localhost ~]# echo 'actionsfile gfw.action' >> /etc/privoxy/config

# Privoxy 默认监听端口是是8118
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy=localhost

# 启动服务
systemctl start privoxy.service
proxy 环境变量
1
2
3
4
5
6
7
8
9
# privoxy默认监听端口为8118
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy=localhost

# no_proxy是不经过privoxy代理的地址
# 只能填写具体的ip、域名后缀,多个条目之间使用','逗号隔开
# 比如: export no_proxy="localhost, 192.168.1.1, ip.cn, chinaz.com"
# 访问 localhost、192.168.1.1、ip.cn、*.ip.cn、chinaz.com、*.chinaz.com 将不使用代理

代理测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 访问各大网站,如果都有网页源码输出说明代理没问题
curl -sL www.baidu.com
curl -sL www.google.com
curl -sL www.google.com.hk
curl -sL www.google.co.jp
curl -sL www.youtube.com
curl -sL mail.google.com
curl -sL facebook.com
curl -sL twitter.com
curl -sL www.wikipedia.org

# 获取当前 IP 地址
# 如果使用 privoxy 全局模式,则应该显示 ss 服务器的 IP
# 如果使用 privoxy gfwlist模式,则应该显示本地公网 IP
curl -sL ip.chinaz.com/getip.aspx
管理脚本

在以上部署操作完成后,应该已经可以正常科学上网了,但是如果需要进行管理时,需要分别管理ssr和privoxy,为了方便管理,这里写了一个shell脚本方便管理: ssr_manager

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
# Author Samzong.lu

case $1 in
start)
ssr start &> /var/log/ssr-local.log
systemctl start privoxy.service
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy="localhost, ip.cn, chinaz.com"
;;
stop)
unset http_proxy https_proxy no_proxy
systemctl stop privoxy.service
ssr stop &> /var/log/ssr-log.log
;;
autostart)
echo "ssr start" >> /etc/rc.local
systemctl enable privoxy.service
echo "http_proxy=http://127.0.0.1:8118" >> /etc/bashrc
echo "https_proxy=http://127.0.0.1:8118" >> /etc/bashrc
echo "no_proxy='localhost, ip.cn, chinaz.com'" >> /etc/bashrc
;;
*)
echo "usage: source $0 start|stop|autostart"
exit 1
;;
esac
使用
1
2
3
4
5
6
7
8
9
10
11
mv gfwlist2privoxy/ssr_manager /usr/local/bin
chmod +x ssr_manager

# 启动服务
ssr_manager start

# 关闭服务
ssr_manager stop

# 添加开机自启动
ssr_manager autostart

参考链接

HowTo Use SSR Service on Mac

应邀制作一份关于Mac SSR的连接使用。

准备

  1. SSR 服务提供商,SSGlobal ,你可以到Telegram加入我们。SSGlobal Group
  2. MacOS 版本 10.12.6,经过实测OS版本对实际使用影响并不大。
  3. SSR Client, 下载

SSR服务

如果你需要科学上网的话,非常愿意给你推荐我正在使用的SSR服务商,但是由于其官方网站和客户沟通工具TG需要科学上网才能使用,所以你可以联系到我来介绍你们。

最新定价计划:

  • Plan-A:¥15.00元,1个月,无限流量,不限速,可自助切换节点。
  • Plan-B:¥15.00元,3个月,6G流量包,不限速,可自助切换节点。
  • 增加线路:¥8.00元,1个月,1条。

注:增加线路仅支持Plan-A用户配套购买,不超过主线路最长期限,不足1个月剩余时限用户不支持购买

注册账号

立即注册

05

这里alexman@mac.local 仅仅是演示邮箱,请填写对应属于你的邮箱.

当你点击提交完成后,在你的邮箱会收到一封激活邮件,点击其中链接或将链接复制到浏览器中即可激活。

07

这里同样是激活链接,同样仅作为演示。

登录系统

立即登录

输入注册时的用户名密码,即可登录到系统内,然后在首页找到进入后台按钮,即可看到试用信息。

06

这里填写用户名或邮箱都可以。

进入系统后,找到订阅链接信息,默认情况下,你应该只有一条线路信息,付费用户享有应急通道。

04

上图中”切换“,用来切换不同服务器节点,注意,切换后要到客户端内刷新订阅信息,下面会讲到。

SSR Client 安装

在本文最上面已经有了,如何下载SSR 客户端的地方,细心的朋友,应该已经在SSGlobal官网上找到了对应下载页面,其中包含全平台的客户端工具。

下载

立即下载

01

下载完成后,找到你的下载文件,双击打开,将程序拖到Mac程序目录即完成安装,和Mac其他软件安装并无不同。

02

启动程序

在Launchpad中找到最近安装的 Shadowsocks NG R8,点击启动后,Mac右上角导航栏中会有一个小飞机的图标,点击可以看到以下信息:

03

上图中已经有我的订阅信息,请忽略

编辑订阅信息

选择编辑订阅信息,然后将你在SSGlobal 网站后台拿到的订阅信息添加到其中

09

注意只要添加URL信息即可,不需要修改其他。

然后选择手动更新订阅,这里在你的服务列表内,就有了你的服务器节点信息,选择对应节点即可开启科学上网

PAC 规则

首次使用PAC需要更新一次PAC规则,操作如下图。

10

这里的PAC规则是从GFWLists更新的,由于其更新速度较慢,所以如果日常使用发现某些网站无法使用,可以手动添加到PAC规则内

11

|| domain , 这里表示匹配所有代理

更多关于用户规则,可以查看这里,使用手册

结语

到这里,基本常用的安装和使用已经完成了,如果测试后仍旧无法正常使用,请仔细检查是否遗漏步骤,也可以与我取得沟通。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×