我想为苹果 iTunes 商店设置一个缓存代理服务器,以加速本地局域网中的应用程序下载。
情况:
- 当地互联网速度较慢且带宽有限,因此从 iTunes Store 下载整个应用程序需要一些时间。
- 我想通过此方法加速 wifi 热点情况下的应用下载速度。因此,我只需要加速一个应用的下载速度,该应用将被本地局域网中的许多人下载很多次。
对于iTunes应用程序的下载必须与用户身份验证和购买有关,似乎没有明显的方法来进行缓存。
那么这种加速可能吗?如何加速?
答案1
更新:
自 High Sierra 以来,Apple 已将内容缓存作为非服务器版本 MacOS 中的一项功能。
https://support.apple.com/guide/mac-help/about-content-caching-mchl9388ba1b/10.13/mac/10.13
我同意上述答案,使用第三方应用程序来实现你所说的功能可能并不容易。
但
苹果对此有自己的解决方案,OS X Server,它有一项称为缓存服务器的功能:
https://www.apple.com/osx/server/features/#caching-server
缓存服务器可加快通过 App Store、Mac App Store、iTunes Store、iTunes U 和 iBooks Store 下载和交付软件的速度。现在它可以在更多网络环境中使用,因为它支持在非 NAT 网络中缓存内容。当您网络上的用户从 Apple 下载新软件时,副本会自动存储在您的服务器上。因此,下次您网络上的其他用户更新或下载相同的软件时,他们实际上是从网络内部访问它。
这不是免费的,但它能完成你想要的功能
答案2
这可能是不可能的,因为我认为 iTunes 只通过 SSL 安全通道传输,因此如果没有大量黑客和定制软件,就无法拦截。我认为他们的目的是让你无法轻易获得软件包。
答案3
iTunes 购买是通过 SSL 进行的,因此这非常困难。除此之外,现在每台设备的 UUID(通常)都与每次下载相关联,因此每次下载实际上都略有不同。
这不会按照你所希望的方式进行。
答案4
您可以尝试 SSL MITM(中间人)代理,这些都是可用的,既有商业的,也有开源的。
需要注意两点:如果 iTunes 严格检查证书字段,则可能无法正常工作。正如 @MDmarra 在上面提到的,设备 UUID 可能是一个问题。这完全取决于应用程序(iTunes)。
... 代理 HTTPS 请求由代理终止并重新发送到远程 Web 服务器。呈现给客户端(即 Web 浏览器)的服务器证书由代理动态生成/签名,并且包含与原始 Web 服务器证书相同的大部分字段。主题 DN、序列号、有效期和扩展名均保留。但是,颁发者 DN 现在设置为代理自签名证书的名称,并且代理的公钥/私钥用于创建伪造证书。这些伪造证书由代理缓存(在内存中),以获得更好的性能。
从:http://crypto.stanford.edu/ssl-mitm/
尝试过同样事情的人也对问题进行了详细的分析:
https://nabla-c0d3.github.io/blog/2013/08/20/intercepting-the-app-stores-traffic-on-ios/
这篇文章提到了一款名为 iOS SSL Kill Switch 的应用程序。这不是您特别需要的,但它可能是解决问题的一个小窍门。