Apple Developerサイトからwgetまたはcurlだけを使用して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
行が逆になっていることを除いて、wgetが提供するxcode-cookie
ファイルと同じ情報を含む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日以降に何かを変更していない限り、私は何か間違ったことをしているに違いありません この男は何か正しいことをしているように見えるため 。
前もって感謝します!
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
たぶんこれがcurlを使用する最も簡単な方法です:
Google Chrome.app
;developer.Apple.com
;CMD
+ SHIFT
+ J
を押すか、右上のMenu
icon-> Tools
-> Developer Tools
をクリックします。Network
パネルをクリックします。Xcode
ダウンロードリンクをクリックします。Network
パネルに1つ以上のリクエストレコードが表示されます。Copy as cURL
]をクリックします。これで、Cookieやその他のhttp-requeset-fieldsを含むこのダウンロードリンクのcurlコマンドを取得しました。ターミナルに貼り付けて、最後に-o xxx.dmg
を追加するだけです。
これはwgetの代わりにcurlを使用するスクリプトなので、ストックMacで動作します。設定する必要があるのは、xcodeDMGファイルへのパスだけです。スクリプトはユーザー名とパスワードの入力を求め、ACTIONとWOSIDの値を計算します。
#!/ bin/sh #この行をxcodeDMGファイルのURIパスに変更します。 XCODE_PATH = "/ ios/ios_sdk_4.2__final /xcode_3.2.5_and_ios_sdk_4。 2_final.dmg " echo" Enter your Apple DevCenterusername。 " read -p"> "USERNAME echo "Enter your Apple DevCenterpassword。" read -p ">" PASSWORD curl\ -L -s -k\ -cookie-jarcookies\ -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} "[。 ; Intel Mac OS X 1 0.5; en-US; rv:1.9.1)Gecko/20090624 Firefox/3.5 "\ -e"; auto "" https://daw.Apple.com$ {ACTION}?theAccountName = $ {USERNAME}&theAccountPW = $ {パスワード}&theAuxValue =&wosid = $ {WOSID}&1.Continue.x = 0&1.Continue.y = 0 "\ >/dev/null curl\ -L --cookie-jarcookies --cookiecookies\ -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 rmcookies
最新バージョンのXcodeをMac開発マシンに直接ダウンロードするのに何度も失敗した後、私は同じ道を進んでいます。また、ダニエルのアプローチを書かれたとおりに機能させることができませんでした。
これは私のために働いたものです:
Firefoxを使用してiOS開発センターにログインしました
使用 Cookie Exporter 1.5 Cookieをテキストファイル(「cookies.txt」など)に保存する
インターネットへの素敵な太いパイプを持っている私のステージングサーバーにcookies.txtをFTPで送信しました
ステージングサーバーから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
ここでの秘訣は、ページからダウンロードリンクを使用するのではなく、ダウンロードを開始してから、ダウンロードリストのコンテキストメニューを使用して[ダウンロードリンクをコピー]することです。
最適ではありませんが、私にとってはうまくいきます:
ダウンロード用の直接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が機能するために必要なすべてのCookieを含むwgetコマンドがクリップボードにコピーされます。このコマンドはいつでも再開して続行できます。
だから私は自分の質問に対する答えを理解しているようです。 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
ファイルを開き、次の2つを探します。
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}
をApple DevCenterの資格情報に置き換えます{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つの異なるマシンで試し、両方で動作しました。
Xcodeをwgetするための小さな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
コメントはjoeのソリューションと同じです-ThnxJoe; o)XcodeのダウンロードURLからトラフィック分析を開始することをお勧めします。