使用wget或curl下载Xcode
我正在尝试使用wget或curl从Apple开发者网站下载Xcode。我想我成功地存储了下载.dmg文件所需的cookie,但我不能完全确定 运行此命令时:使用wget或curl下载Xcode,xcode,macos,curl,wget,Xcode,Macos,Curl,Wget,我正在尝试使用wget或curl从Apple开发者网站下载Xcode。我想我成功地存储了下载.dmg文件所需的cookie,但我不能完全确定 运行此命令时: wget \ --post-data="theAccountName=USERNAME&theAccountPW=PASSWORD" \ --cookies=on \ --keep-session-cookies \ --save-cookies=cookies.txt \
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执行相同的操作时:
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
的文件,它包含与wget提供给我的cookies.txt
文件相同的信息,只是行是颠倒的
然后我尝试下载.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=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx的文件&路径=%2F%2Fios%2foos\u下载。操作?路径=%2Fios%2Fios\u sdk\u 4.1\u最终%2Fxcode\u 3.2.4\u和\u ios\u sdk\u 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不在饼干里有关,但就像我之前说的,我不确定。我甚至试着从我的浏览器中导出cookies,并按照我在下面链接的博客文章和搜索帮助时找到的其他几个网站中的说明进行操作
我一定是做错了什么,除非苹果从10月10日起改变了什么
提前谢谢 在多次未能将最新版本的Xcode直接下载到我的Mac-dev机器上之后,我也走上了同样的道路。我也无法完全按照书面形式理解丹尼尔的工作方法 这就是我的工作:
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
这里的诀窍是不要使用页面上的下载链接,而是开始下载,然后使用下载列表中的上下文菜单“复制下载链接”。所以我似乎找到了我自己问题的答案。下面是使用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
文件,查找以下两项内容:
- 登录表单的
属性。应该在54号线附近操作
- 名为
的wosid
字段。这应该在第129行上/附近input
操作
属性的值以及值
属性的值。下一步你需要这些
下面是下一个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}
- 用您的Apple开发中心凭据替换
和{USERNAME}
{PASSWORD}
- 用保存的WOSID值替换
{WOSID}
- 运行命令
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
我已经在两台不同的机器上尝试过这一点,并且在这两台机器上都可以使用。这里有一个小的wget Xcode bash脚本:
#!/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
#/bin/bash
导出ID=YourAppleID
导出PW=YourPW
[-f cookies]&&rm cookies&&touch cookies
2> 标题\
wget\
-\
-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标题| grep位置
LOCATION=$(grep LOCATION Header | sed-E的/^*位置:([^/]+:\/\/\/[^/]+)\/.$/\1/'))
[-z“$LOCATION”]&&{echo“LOCATION的糟糕日子…”;退出;}| | echo“LOCATION=$LOCATION”
rm标头
ACTION=$(grep ACTION R1 | sed's/^.*ACTION=“//;s/”*$/'))
[-z“$ACTION”]&&{echo“糟糕的行动日…”;退出;}| | echo“ACTION=$ACTION”
POST=$(grep input R1 | sed’s/这里有一个使用curl而不是wget的脚本,因此它可以在股票Mac上工作。
您只需要设置xcode DMG文件的路径。
脚本将要求您输入用户名、密码和密码
它将为您计算操作和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
#!/bin/sh
#将此行更改为xcode DMG文件的URI路径。
XCODE_PATH=“/ios/ios_sdk_4.2_最终版/XCODE_3.2.5_和_ios_sdk_4.2_最终版.dmg”
echo“输入您的Apple开发中心用户名。”
读取-p“>”用户名
echo“输入您的Apple开发中心密码。”
读取-p“>”密码
卷曲\
-L-s-k\
--饼干罐饼干\
-“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}”
回显“wosid=${wosid}”
卷曲\
-s-k——饼干罐饼干——饼干饼干饼干\
-“Mozilla/5.0(Macintosh;U;Intel Mac OS X 10.5;en-US;rv:1.9.1)Gecko/20090624 Firefox/3.5”\
-e“自动”https://daw.apple.com${ACTION}?帐户名=${USERNAME}&theAccountPW=${PASSWORD}&theAuxValue=&wosid=${wosid}&1.Continue.x=0&1.Continue.y=0”\
>/dev/null
卷曲\
-曲奇饼罐曲奇饼--曲奇饼\
-“Mozilla/5.0(Macintosh;U;Intel Mac OS X 10.5;en-US;rv:1.9.1)Gecko/20090624 Firefox/3.5”\
-Ohttps://developer.apple.com/ios/download.action?path=${XCODE_PATH}
rm login.htm
copy('wget -c http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_5_za4gu6/xcode_6_beta_5.dmg --header="Cookie:' + document.cookie + '"')