web-dev-qa-db-ja.com

wgetまたはcurlを使用したXcodeのダウンロード

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日以降に何かを変更していない限り、私は何か間違ったことをしているに違いありません この男は何か正しいことをしているように見えるため

前もって感謝します!

29
Joe

Chromeの場合、

  1. インストール cookies.txt Chrome拡張機能
  2. Apple開発者サイトにログインし、ダウンロード用のURLを取得します
  3. Cookies.txt拡張子を実行し、cookies.txtファイルをダウンロードします
  4. Cookies.txtダウンロードディレクトリから、Cookieをwgetにロードし、再開可能なダウンロードを開始します。たとえば、Xcode_7.dmgをダウンロードするには、次のコマンドを実行します。

    wget --load-cookies = cookies.txt -c http://adcdownload.Apple.com/Developer_Tools/Xcode_7/Xcode_7.dmg

39
petert

たぶんこれがcurlを使用する最も簡単な方法です:

  • 開くGoogle Chrome.app;
  • goto site developer.Apple.com;
  • CMD + SHIFT + Jを押すか、右上のMenuicon-> Tools-> Developer Toolsをクリックします。
  • Networkパネルをクリックします。
  • 次に、Apple.comのXcodeダウンロードリンクをクリックします。
  • Networkパネルに1つ以上のリクエストレコードが表示されます。
  • 最新のレコードを右クリックし、[Copy as cURL]をクリックします。

これで、Cookieやその他のhttp-requeset-fieldsを含むこのダウンロードリンクのcurlコマンドを取得しました。ターミナルに貼り付けて、最後に-o xxx.dmgを追加するだけです。

19
Ethan

これは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 
14
Noah Spurrier

最新バージョンのXcodeをMac開発マシンに直接ダウンロードするのに何度も失敗した後、私は同じ道を進んでいます。また、ダニエルのアプローチを書かれたとおりに機能させることができませんでした。

これは私のために働いたものです:

  1. Firefoxを使用してiOS開発センターにログインしました

  2. 使用 Cookie Exporter 1.5 Cookieをテキストファイル(「cookies.txt」など)に保存する

  3. インターネットへの素敵な太いパイプを持っている私のステージングサーバーにcookies.txtをFTPで送信しました

  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

ここでの秘訣は、ページからダウンロードリンクを使用するのではなく、ダウンロードを開始してから、ダウンロードリストのコンテキストメニューを使用して[ダウンロードリンクをコピー]することです。

9
Greg

最適ではありませんが、私にとってはうまくいきます:

ダウンロード用の直接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コマンドがクリップボードにコピーされます。このコマンドはいつでも再開して続行できます。

3
highmaintenance

だから私は自分の質問に対する答えを理解しているようです。 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つの異なるマシンで試し、両方で動作しました。

1
Joe

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からトラフィック分析を開始することをお勧めします。

1
denis