果粉们忍够了!——App Store下载提速脚本
果粉们忍够了!——App Store下载提速脚本
首先申明一点,我不是果粉,虽然我用各种苹果产品,但是我最喜欢的手机牌子依旧是火腿肠(HTC),最喜欢 的笔记本牌子依旧是ThinkPad。写本文的主要目的是方便国内使用苹果设备的同学们,想必大家都碰到过在国内下载App Store龟速的情况。价格不菲的苹果产品在天朝几Mb的带宽下竟然在以数十KB的速度下载,是相当不能忍的事情。其实原因很简单,苹果在大陆没有服务 器,外国人做的软件貌似都不太了解中国国情,在这个互联网自由基本靠翻墙的神奇国度里,iTunes不增加动态检测可用的以及最快的服务器的功能真是弱爆 了。不知道CEO 库克的来访是不是预示着苹果公司对中国市场越来越重视,不过国外公司无法在境内建造数据中心,必须有落地的本土企业才行,估计苹果服务器要落地内地比较 难。
虽说iTunes自身不会那么智能的选择最快的接入点,但是我们可以帮它一把。网上之前也有过介绍类似PingInfoView之类批量Ping工 具来找到相应最快的服务器的文章,大都hardcode了一些服务器IP,但哪些文章没有解决的就是如何得到哪些IP的,一旦苹果更改了服务器IP,那么 一切都完了。所以,今天下午写了一个简单的Python脚本来动态的挑选最快的服务器。
不多说,先上代码(以下是我写的部分,没有包含我调用的Python Ping的代码,完整版请见:
https://github.com/hackerzhou/Scripts/blob/master/optimize_app_store_hosts.py
完整版脚本可以直接用python optimize_app_store_hosts.py调用,运行完成后会在当前目录下生成两个文件,apple_ip.txt包含了App Store不同的IP地址以及各自的ping响应时间,hosts文件包含了一个自动选取ping响应最快的那个IP生成的hosts列表,大家贴到 C:\Windows\system32\drivers\etc\hosts(Windows),/etc/hosts(Mac)文件中就可以了,同时 也可以传到越狱了的苹果设备中去。
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
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#!/usr/bin/env python import sys,socket PING_TIMEOUT = 1000 def main(): hosts = [ 'a%d.phobos.apple.com' % i for i in range ( 1 , 200 )] ips = get_ips(hosts) records = ping_ips(ips) output(records) def get_ips(hosts): ips = [] for host in hosts: ips.extend(get_ip(host)) return {}.fromkeys(ips).keys() def get_ip(host): print 'Getting IP for %s' % host ip_records = socket.getaddrinfo(host, None , socket.AF_INET) return [ip_record[ 4 ][ 0 ] for ip_record in ip_records] def ping_ips(ips): ping_result = [(ip, my_ping(ip)) for ip in ips] ping_result.sort( cmp = lambda x, y: cmp (x[ 1 ], y[ 1 ])) return ping_result def output(records): record_lines = [ 'IP: %s\tTime: %f ms\n' % (record[ 0 ], round (record[ 1 ])) for record in records] write_file( 'apple_ip.txt' , record_lines) if len (records) > 0 and records[ 0 ][ 1 ] < PING_TIMEOUT: ip = records[ 0 ][ 0 ] hosts_lines = [ '%s\ta%d.phobos.apple.com\n' % (ip, i) for i in range ( 1 , 2000 )] hosts_lines.insert( 0 , "#START APPLE STORE#\n" ) hosts_lines.append( "#END APPLE STORE#\n" ) write_file( 'hosts' , hosts_lines) def write_file(filename, lines): with open (filename, 'w' ) as output_file: output_file.writelines(lines) output_file.close() def my_ping(hostname): return Ping(hostname, PING_TIMEOUT, 8 ).run( 4 ) ... (Visit https: / / github.com / hackerzhou / Scripts / blob / master / optimize_app_store_hosts.py to see the rest part) |
代码很简单,因为App Store的hostname都长成类似a1.phobos.apple.com这样,然后我们就从1到199遍历下(其实网上说可能会到2000,我实 验下来大量的IP是相同的,真正不同的IP也就只有几十个。保险起见还是遍历了199个,没有验证过,如果大家有相关资料可以回复更正我。)把遍历得到的 IP列表去除重复的,然后再挨个ping,最后按照ping的平均响应时间来排序,选择最快的那一个,产生一个hosts文件。本来想直接写入系统 hosts文件的,因为Mac下必须用sudo才能写hosts而且随便改别人hosts文件毕竟不太好,容易引起杀毒软件报警,所以就直接写入到一个本 地文件中。
Python写起来还是相当方便和简练的,特别是使用推导式构建列表以及lambda语法,用惯了Java再换用Python就会有一种耳目一新的感觉~
原文:http://hackerzhou.me/2012/04/accelerate-apps-store.html
======
加快 iTunes 从苹果 App Store 应用商店下载软件或者 App 更新包速度的方法
国内苹果用户遇到的一大中国特色麻烦就是:用 iTunes 从苹果 App Store 应用商店下载软件或者 App 更新太慢了。苹果为 App Store 准备了 a1.phobos.apple.com 到 a2000.phobos.apple.com 这么一群服务器,美国、欧洲、日韩、港澳……就是没在 GDP 第二牛逼国部署。
如果你的 iTunes 连到香港/澳门/台湾等距离较近的地方,下载 App 的速度就还算快;万一连到美国或者欧洲的苹果服务器去了,你可以想想数据绕着地球转圈儿(还得穿过“长城”)后 iTunes 下载速度会多么慢。下面是通过修改 hosts,加快 iTunes 从苹果 App Store 下载速度的方法。
首先我们要找到离中国近的主机 ip,换句话说连接谁下载速度快。
像这种延时几百毫秒的,就算了吧
这个延时几十毫秒的一定是苹果部署在港澳台的主机,就要它的 ip
在 我使用的北京电信,173.223.52.163 这个 ip 最快(219.76.10.14、202.175.5.104 也很快)。你要做的是先验证我在北京电信用起来速度很快的这个 ip 在你那是否同样适用。所以应该先 ping 这个 173.223.52.163
Mac 用户点击屏幕右上角放大镜按钮,Spotlight 搜索“网络实用工具”。切到 Ping 标签,像上面截图那样。在对话框里输入 173.223.52.163,点击 “Ping” 按钮。 …… PC 用户点击 开始-附件-命令提示符。然后输入 “ping 173.223.52.163”(无引号), 回车。
如果你得到的结果像上面第二张图那样延时几十毫秒,那直接点击下面的链接下载 hosts 修改文件。
如 果延时很大,再 ping 一下上面括号里的两个 ip。还不行你就得依次 ping a1.phobos.apple.com、a2.phobos.apple.com …… 以此类推。方式和上面的 ping ip 地址一样。每次都会返回这个网址的对应 ip 和延时。找到延时几十毫秒的,记住它的 ip。然后,下载上面那个 txt 文件,打开并把里面的 173.223.52.163 全部换成你找到的 ip(查找-全部替换,很快的)。
下一步,修改 hosts 文件
Mac 用户参考昨天写的苹果电脑 Mac OS X 系统下修改 hosts 文件的方法,PC 用户 hosts 文件位于 c:/windows/system32/drivers/etc目录下,打开后把新增的这组 hosts 粘进去保存。
OK,去苹果 App Store 找个免费应用,试试 iTunes 的下载速度吧。
原文:http://www.mac52ipod.cn/post/speed-up-apple-itunes-download-speed-from-app-store-by-dns.php
iGFW博客获德国之声博客大赛“最佳中文博客公众奖”提名 欢迎网友为本博客投票!
http://igfw.net/archives/8681
173.223.52.163这个延时200多其他的大都是延时110多,就是没有几十的啊,我在北京为什么会这样呢
已投票,谢谢博主几年来的无私奉献,让我学习到很多知识,近期我的goagent总是连接错误,我看 google app engine中Dashboard,说是Frontend Instance Hours达到100%应该怎样解决啊
没办法,免费用户的限制,多搭建数个goagent应用分流使用吧
你是看视频了还是备份硬盘了……
一个手机号(或者说Gmail账号)最多建10个App,多弄几个就行了。
这个问题您可以 http://code.google.com/p/goagent/issues/list 提问