我正在尝试使用wget或curl从Apple Developer网站下载Xcode。我想我已经成功存储了下载.dmg文件所需的cookie,但我并不完全确定。
当我运行此命令时:
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=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并按照我在下面链接的博客文章中的说明以及我在搜索帮助时找到的其他几个网站。
我必须做错事,除非Apple自10月10日以来改变了一些事情because this guy seems to be to do something right。
提前致谢!
答案 0 :(得分:37)
对于Chrome,
从cookies.txt下载目录中,将cookie加载到wget并开始可恢复下载。例如,要下载Xcode_7.dmg,您将运行:
wget --load-cookies = cookies.txt -c http://adcdownload.apple.com/Developer_Tools/Xcode_7/Xcode_7.dmg
答案 1 :(得分:18)
也许这是使用curl最简单的方法:
Google Chrome.app
; developer.apple.com
; CMD
+ SHIFT
+ J
或点击右上角Menu
图标 - > Tools
- > Developer Tools
; Network
面板; Xcode
下载链接; Network
面板中看到一个或多个请求记录; Copy as cURL
; 现在,您获得了包含Cookie和其他http-requeset字段的下载链接的curl命令,只需粘贴到您的终端并在最后添加-o xxx.dmg
。
答案 2 :(得分: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
答案 3 :(得分:9)
我反复尝试将最新版本的Xcode直接下载到我的Mac开发机器上,但我刚刚走上了同样的道路。我也无法完全按照书面形式完成丹尼尔的工作方法。
这对我有用:
使用Firefox登录iOS开发中心
使用Cookie Exporter 1.5将Cookie保存到文本文件中,例如“cookies.txt”
FTP将cookies.txt发送到我的登台服务器,该服务器上有一个很好的胖管道
从登台服务器使用wget下载文件(约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
这里的技巧是不使用页面上的下载链接,而是开始下载,然后使用下载列表中的上下文菜单“复制下载链接”。
答案 4 :(得分: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工作所需的所有cookie。您可以随时重新启动此命令以继续。
答案 5 :(得分: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
的{{1}}字段。这应该在第129行/附近。复制wosid
属性的值以及输入字段的action
属性的值。你需要这些用于下一步。
这是下一个curl命令:
value
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}
替换为Apple开发人员中心凭据{PASSWORD}
替换为您保存的wosid值您现在应该拥有允许您下载.dmg文件的cookie。如果您现在还没有注意到,则cookie存储在名为{WOSID}
的文件中。
现在只需运行最后一个curl命令,Xcode图像应该开始下载:
cookies
我在两台不同的机器上试过这个并且同时适用于它们。
答案 6 :(得分:1)
这里有一个小的bash脚本来记录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 Joe; o) 好主意是从Xcode的下载URL开始流量分析。
答案 7 :(得分:1)
@petert的回答过去曾经对我有用,但现在它显示错误403(禁止访问)。
我最终使用了Downloader-for-Apple-Developers这个开放源代码的应用程序,它具有图形界面,可以登录到Apple的开发人员网站并下载Xcode .xip文件。
这是图形界面的外观: 可以从这里下载最新版本: https://github.com/vineetchoudhary/Downloader-for-Apple-Developers/releases