使用wget或curl下载Xcode

使用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或curl从Apple开发者网站下载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=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机器上之后,我也走上了同样的道路。我也无法完全按照书面形式理解丹尼尔的工作方法

这就是我的工作:

  • 使用Firefox登录iOS开发中心

  • 用于将cookies保存到文本文件,如“cookies.txt”

  • FTP'd 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
    

    这里的诀窍是不要使用页面上的下载链接,而是开始下载,然后使用下载列表中的上下文菜单“复制下载链接”。

    所以我似乎找到了我自己问题的答案。下面是使用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
      input
      字段。这应该在第129行上/附近
    复制输入字段的
    操作
    属性的值以及
    属性的值。下一步你需要这些

    下面是下一个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}
    • 运行命令
    您现在应该有了cookie,可以下载.dmg文件。如果您现在还没有注意到,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
    

    我已经在两台不同的机器上尝试过这一点,并且在这两台机器上都可以使用。

    这里有一个小的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 + '"')