我想为苹果itunes商店设置一个caching代理服务器,以加速本地局域网中的应用下载。
情况:
对于iTunes下载必须涉及到用户authentication和购买,似乎没有明显的方式来做caching。
那么这个加速可能如何呢?
我同意上面的答案,因为苹果公司正在使用强大的encryption技术,使用第三方应用程序所说的话可能并不容易。
但
苹果有它自己的解决scheme,OS X服务器,它有一个function称为caching服务器:
https://www.apple.com/osx/server/features/#caching-server
caching服务器通过App Store,Mac App Store,iTunes Store,iTunes U和iBooks Store加速下载和交付软件。 而现在它可以用在更多的networking环境中,因为它支持在非NATnetworking中caching内容。 当您networking上的用户从Apple下载新软件时,副本会自动存储在您的服务器上。 因此,下一次networking上的其他用户更新或下载相同的软件时,他们实际上是从networking内部进行访问的。
这不是免费的,但它是做你想做的事情
这可能是不可能的,因为我认为iTunes只能通过SSL安全通道传输,因此不能在没有大量黑客和定制软件的情况下被拦截。 我认为这是他们的意图,你不能轻易获得软件包。
iTunes购买发生在SSL上,所以这让人难以置信。 最重要的是,每个设备的UUID现在(通常)绑定到每个下载中,以便每次下载实际上稍有不同。
这不会按照你想要的方式工作。
您将需要设置本地MITM SSL代理服务器,然后将stream量转移到高速caching代理以获取下载的实际位数。 这可以工作,除非iTunes / iOS正在对提供的SSL证书进行encryption检查。 在这种情况下,这是不可能的。 值得与MITM SSL代理商核对,看看你是否可以通过伪造证书…如果这样的话,那么这一切都落到了位置。
您可以尝试使用SSL MITM(Man in the Middle)代理服务器,这些代理服务器都可以使用,包括商业和开源(ly)。
有两件事情需要注意,如果iTunes严格检查证书字段,这可能无法正常工作。 正如@MDmarra上面提到的设备UUIDs可能是一个问题。 这完全是应用程序(iTunes)的依赖。
被代理的HTTPS请求被代理终止并重新发送到远程networking服务器。 呈现给客户端(即Web浏览器)的服务器证书由代理dynamic生成/签名,并包含与原始Web服务器证书大部分相同的字段。 主题DN,序列号,有效date和扩展名被保留。 但是,颁发者DN现在被设置为代理的自签名证书的名称,并且代理的公钥/私钥用于创build伪造的证书。 这些伪造的证书被代理caching(在内存中),以获得更好的性能。
来自: 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的应用程序。 这并不是你所需要的,但它可能是一个难题。