2010-11-02 220 views
23

我正在尝试使用wget或curl从Apple Developer网站下载Xcode。我认为我成功地存储了我需要下载.dmg文件的cookie,但我并不完全确定。使用wget或curl下载Xcode

当我运行此命令:

wget \ 
    --post-data="theAccountName=USERNAME&theAccountPW=PASSWORD" \ 
    --cookies=on \ 
    --keep-session-cookies \ 
    --save-cookies=cookies.txt \   
    -O - \ 
    https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg > /dev/null 

cookies.txt创建一个文件,包含像这样:

developer.apple.com FALSE/FALSE 0 XXXXXXXXXXXXXXXX XXXXXXXXXXXX 
developer.apple.com FALSE/FALSE 0 developer.sessionToken 

我不能完全肯定,但我认为应该有更多的(比如sessionToken之后的字母数字字符串)。

当我尝试用这个做同样的事情,卷曲:

curl \ 
    -d "theAccountName=USERNAME&theAccountPW=PASSWORD" \ 
    -c xcode-cookie \ 
    -A "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" \ 
    https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg 

我得到了一个名为xcode-cookie文件,其中包含了相同的信息cookies.txt文件的wget给我,只是行反转。

然后我试图下载.dmg文件。

使用wget:

wget \ 
    --cookies=on \ 
    --load-cookies=cookies.txt \ 
    --keep-session-cookies \ 
    http://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg 

这给了我一个名为login?appIdKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&path=%2F%2Fios%2Fdownload.action?path=%2Fios%2Fios_sdk_4.1__final%2Fxcode_3.2.4_and_ios_sdk_4.1.dmg 文件,它只是包含了开发者网站的登录表单的HTML页面。

使用curl:

curl \ 
    -b xcode-cookie \ 
    -c xcode-cookie \ 
    -O -v \ 
    -A "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1" \ 
    https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg 

这基本上打印同样的事情的wget(减去HTML)。

我想说它与sessionToken不在cookie中有关,但正如我之前所说的我不确定。我甚至尝试从我的浏览器中导出cookie,并按照我在下面链接的博客文章中的说明以及我在搜索帮助时发现的其他几个网站中的说明进行操作。

我一定在做错事,除非苹果自10月10日起改变了一些东西because this guy seems to be to do something right

在此先感谢!

回答

28

使用Chrome,

  1. 安装cookies.txt Chrome extension
  2. 登录苹果开发者网站并获取URL下载
  3. 运行cookie.txt的扩展和下载文件cookie.txt的
  4. 从cookies.txt下载目录中,将cookie加载到wget并开始可恢复的下载。例如,下载Xcode_7.dmg,你可以运行:

    wget的--load饼干= cookie.txt的-c http://adcdownload.apple.com/Developer_Tools/Xcode_7/Xcode_7.dmg

+0

谢谢,petert!省去了我自己做的麻烦。 – Joe 2011-03-16 14:12:54

+0

Yeh,作品一种享受 - 现在很容易设置它在夜间下载;使用cron。 – petert 2011-03-16 16:34:12

9

我一直在屡次将最新版本的Xcode直接下载到我的Mac开发机器后,走上了同样的道路。我也无法让丹尼尔的方法完全按照书面的方式工作。

这就是为我所做的工作:

  1. 使用火狐登录到使用Cookie Exporter 1.5到饼干保存到一个文本文件中的iOS开发中心

  2. ,说“cookie.txt的“

  3. FTP'd饼干。TXT到有一个很好的脂肪管道到互联网矿的临时服务器

  4. 从临时服务器使用wget来下载文件(约5分钟)

  5. 通过FTP的DMG文件传输回我的开发机(约2小时)

这里是wget命令行:

wget --cookies=on --load-cookies=cookies.txt --keep-session-cookies --save-cookies=cookies.txt http://adcdownload.apple.com/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg 

这里的技巧是不使用的下载林k,而是开始下载,然后使用下载列表中的上下文菜单来“复制下载链接”。

+0

无论出于何种原因,这似乎不起作用,但它仍然帮助我! – Joe 2010-11-04 12:56:32

+0

发送HTTP请求,等待响应... 403禁止发送 11:05:27错误403:禁止。 – nishantcm 2011-03-11 07:25:07

+0

只需注册,你的技巧仍然有效。我只是给wget添加了“--continue”,所以如果出现问题,您可以在故障点继续下载。 – 2017-11-13 00:58:15

1

所以我似乎找出了我自己的问题的答案。以下是如何使用curl下载Xcode。

首先,运行以下命令:

curl \ 
-L -s -k \ 
--cookie-jar cookies \ 
-A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
https://developer.apple.com/devcenter/ios/login.action \ 
-o login.html 

打开login.html文件,该文件创建和查找这些两两件事:

  • 登录表单的action属性。它应该在第54行左右。
  • input字段名为wosid。这应该是上/围绕线129

复制action属性的值以及输入字段的value属性的值。您将需要这些用于下一步。

这里的下一个curl命令:

curl \ 
-s -k --cookie-jar cookies --cookie cookies \ 
-A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
-e ";auto" "https://daw.apple.com{ACTION}?theAccountName={USERNAME}&theAccountPW={PASSWORD}&theAuxValue=&wosid={WOSID}&1.Continue.x=0&1.Continue.y=0" \ 
> /dev/null 
  • 替换{ACTION}与您保存
  • 更换{USERNAME}{PASSWORD}与你的苹果开发中心凭据动作值
  • 更换{WOSID}与wosid值你保存
  • 运行命令

您现在应该拥有允许您下载.dmg文件的cookie。如果您现在还没有注意到,该Cookie将存储在名为cookies的文件中。

现在只要运行这个最后的curl命令和Xcode的形象应该开始下载:

curl \ 
-L --cookie-jar cookies --cookie cookies \ 
-A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
-O https://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.1__final/xcode_3.2.4_and_ios_sdk_4.1.dmg 

我已经试过这2吨不同的机器和工作两个。

+0

我尝试这个,它启动并停止在4kb,在遵循其他指令之后... curl -L --cookie-jar cookies --cookie cookies -A“Mozilla/5.0(Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9。1)Gecko/20090624 Firefox/3.5“-O http://adcdownload.apple.com/Developer_Tools/xcode_4.0.2_and_ios_sdk_4.3/xcode_4.0.2_and_ios_sdk_4.3.dmg – 2011-05-05 13:46:17

1

这里有一个小bash脚本给wget的Xcode:

#!/bin/bash 

export ID=YourAppleID 
export PW=YourPW 

[ -f cookies ] && rm cookies && touch cookies 

2>Header \ 
wget \ 
-S \ 
-O R1 \ 
http://developer.apple.com/ios/download.action?path=/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg 

tac Header | grep Location 
LOCATION=$(grep Location Header | sed -E 's/^ *Location: ([^/]+:\/\/[^/]+)\/.*$/\1/') 
[ -z "$LOCATION" ] && { echo "Bad day for LOCATION...";exit;} || echo "LOCATION=$LOCATION" 
rm Header 

ACTION=$(grep action R1 | sed 's/^.*action="//;s/".*$//') 
[ -z "$ACTION" ] && { echo "Bad day for ACTION...";exit;} || echo "ACTION=$ACTION" 

POST=$(grep input R1 | sed 's/<input/\ 
<input/g' | grep input | sed 's/^.*name="//' | sed 's/".*value="/=/;s/".*$//' | sed '/=/!s/$/=/' | sed '/theAccountName/s/$/'$ID'/;/theAccountPW/s/$/'$PW'/' | sed '/=$/d' | sed -n '1h;1!H;${x;s/[[:space:]]/\&/g;p;}' | sed 's/$/\&1.Continue.x=0\&1.Continue.y=0/') 
[ -z "$POST" ] && { echo "Bad day for POST...";exit;} || echo "POST=$POST" 

2>Header \ 
wget \ 
-S \ 
--save-cookies cookies \ 
--keep-session-cookies \ 
-O R2 \ 
--post-data="$POST" \ 
$LOCATION/$ACTION 

URL=$(grep -i REFRESH R2 | sed 's/^.*URL=//;s/".*$//') 
[ -z "$URL" ] && { echo "Bad day for URL...";exit;} || echo "URL=$URL" 

wget \ 
-S \ 
--load-cookies cookies \ 
$URL & 

sleep 1; rm R1 R2 Header cookies 

评论是一样的乔的解决方案 - 日Thnx乔O) 的好主意是,开始从Xcode中的下载网址的流量分析。

+1

替换uname和pwd并运行此脚本会给我:./wgetapple.sh:第14行:tac:命令未找到 糟糕的一天LOCATION ... – 2011-05-05 13:47:14

+0

Ok'tac'不是安装在Mac OS X上的标准命令的一部分,在发布脚本时我忘记了这一点。在脚本开始的两次导出之后,只要添加'tac(){sed -ne'1h; 1!{G; x;}; $ {x; p;}';}'就可以纠正这个错误。正在使用macport,你也可以用'gtac'来安装'gtac'并替换'tac':o) – denis 2011-05-21 20:45:22

14

这是一个脚本,它使用curl而不是wget,所以它可以在Mac上使用。 您只需设置xcode DMG文件的路径即可。 该脚本会询问您的用户名和密码,并且会为您找出ACTION和WOSID值。

#!/bin/sh 

# Change this line to the URI path of the xcode DMG file. 
XCODE_PATH="/ios/ios_sdk_4.2__final/xcode_3.2.5_and_ios_sdk_4.2_final.dmg" 

echo "Enter your Apple Dev Center username." 
read -p "> " USERNAME 
echo "Enter your Apple Dev Center password." 
read -p "> " PASSWORD 

curl \ 
     -L -s -k \ 
     --cookie-jar cookies \ 
     -A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
     https://developer.apple.com/devcenter/ios/login.action \ 
     -o login.html 

ACTION=$(sed -n 's/.*action="\(.*\)".*/\1/p' login.html) 
WOSID=$(sed -n 's/.*wosid" value="\(.*\)".*/\1/p' login.html) 
echo "action=${ACTION}" 
echo "wosid=${WOSID}" 

curl \ 
     -s -k --cookie-jar cookies --cookie cookies \ 
     -A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
     -e ";auto" "https://daw.apple.com${ACTION}?theAccountName=${USERNAME}&theAccountPW=${PASSWORD}&theAuxValue=&wosid=${WOSID}&1.Continue.x=0&1.Continue.y=0" \ 
     > /dev/null 

curl \ 
     -L --cookie-jar cookies --cookie cookies \ 
     -A "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5" \ 
     -O https://developer.apple.com/ios/download.action?path=${XCODE_PATH} 

rm login.html 
rm cookies 
+1

这个脚本不再适用了,也许这个网址已经改变了? – thiagoveloso 2016-09-14 21:31:07

3

不是最优的,但对我的作品:

如果您知道直接的URL下载(例如,你开始下载),那么你可以登录在开发人员门户网站,并在控制台中运行以下JS:

copy('wget -c http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_5_za4gu6/xcode_6_beta_5.dmg --header="Cookie:' + document.cookie + '"') 

这将在剪贴板复制wget命令所有必要的wget工作的cookies。您可以随时重新启动此命令以继续。

17

也许这是使用卷曲的最简单的方法:

  • 开放Google Chrome.app;
  • 转到站点developer.apple.com;
  • CMD + SHIFT + J或点击右上方Menu图标 - >Tools - >Developer Tools;
  • 点击Network面板;
  • 现在点击Xcode下载链接apple.com;
  • 您将在Network面板中看到一个或多个请求记录;
  • 右键点击最新记录,然后点击Copy as cURL;现在

,你得到了curl命令与cookies和其他HTTP-requeset字段这个下载链接,只需粘贴到你的终端,并在末尾添加-o xxx.dmg

+2

在末尾添加'-L -C -'(建议使用'-o xxx.dmg'后),您可以**继续**以前的下载(即下载中断的服务器端) – mginius 2015-03-20 10:14:59