2010-11-02 16 views
23

Ich versuche Xcode von der Apple Developer Site mit nur wget oder curl zu laden. Ich denke, dass ich erfolgreich den Cookie speicher, den ich brauche, um die .dmg-Datei herunterzuladen, aber ich bin mir nicht ganz sicher.Herunterladen von Xcode mit wget oder curl

Wenn ich diesen Befehl:

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 

eine Datei namens cookies.txt erstellt und enthält etwa so:

developer.apple.com FALSE/FALSE 0 XXXXXXXXXXXXXXXX XXXXXXXXXXXX 
developer.apple.com FALSE/FALSE 0 developer.sessionToken 

ich nicht ganz sicher bin, aber ich denke, es sollte mehr sein dazu (nämlich eine alphanumerische Zeichenfolge nach sessionToken).

Wenn ich versuche, das gleiche mit curl, dies zu tun mit:

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 

bekomme ich eine Datei namens xcode-cookie, die die gleichen Informationen wie die cookies.txt Datei wget enthält, gibt mir, mit der Ausnahme, dass die Linien umgekehrt sind.

Ich versuchte dann, die .dmg-Datei herunterzuladen.

mit 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 

Das gibt mir eine Datei 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 genannt, die nur eine HTML-Seite ist das Anmeldeformular für die Entwickler-Site enthält.

Mit 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 

die im Grunde das Gleiche wie wget druckt (minus die HTML).

Ich möchte sagen, es hat mit der sessionToken nicht im Cookie zu tun, aber wie ich schon sagte, ich bin mir nicht sicher. Ich habe sogar versucht, die Cookies von meinem Browser zu exportieren und den Anweisungen in dem Blogpost zu folgen, den ich unten verlinkt habe, und einige andere Seiten, die ich bei der Suche nach Hilfe gefunden habe.

Ich muss etwas falsch machen, es sei denn, Apple hat etwas seit Oktober 10 because this guy seems to be to do something right geändert.

Vielen Dank im Voraus!

Antwort

28

Für Chrome,

  1. installieren cookies.txt Chrome extension
  2. Login Entwickler-Website von Apple und die URL erhalten für
  3. Run cookies.txt Erweiterung herunterladen und cookies.txt Datei herunterladen
  4. Laden Sie die Cookies aus dem cookies.txt-Download-Verzeichnis in wget und starten Sie den fortsetzbaren Download. Zum Beispiel zum Download Xcode_7.dmg, würden Sie laufen:

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

+0

Danke, Peter, erspart mir die Mühe, es selbst zu tun. – Joe

+0

Yeh, funktioniert ein Leckerbissen - jetzt ist es einfach, das Herunterladen über Nacht einzustellen, mit Cron. – petert

9

Ich war gerade auf der gleichen Straße, nachdem ich wiederholt die neueste Version von Xcode nicht direkt auf meine Mac-Dev-Maschine heruntergeladen hatte. Ich konnte Daniels Arbeitsweise auch nicht so erreichen, wie sie geschrieben wurde.

Dies ist, was für mich getan hat Arbeit:

  1. Firefox verwendet, um die Entwickler-Center iOS anmelden

  2. Gebrauchte Cookie Exporter 1.5 die Cookies in eine Textdatei zu speichern, sagen Sie „cookies.txt "

  3. FTP-Cookies.txt zu einem Testserver von mir, die ein schönes dickes Rohr auf das Internet hat

  4. Gebrauchte wget aus dem Staging-Server die Datei (ca. 5 Minuten)

  5. Gebrauchte FTP zu übertragen, die DMG-Datei zurück zum herunterladen meine dev-Maschine (ca. 2 Stunden)

hier ist die wget Kommandozeile:

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 

der Trick hier ist nicht die Download-lin verwenden k von der Seite, sondern um den Download zu starten, verwenden Sie dann das Kontextmenü in der Download-Liste zu "Download-Link kopieren".

+0

Das, aus welchem ​​Grund auch immer, schien nicht zu funktionieren, aber es half mir immer noch! – Joe

+0

HTTP-Anfrage gesendet, Antwort wartet ... 403 Verboten 11:05:27 FEHLER 403: Verboten. – nishantcm

+0

Nur zur Registrierung funktioniert Ihr Trick noch. Ich habe gerade "--weiter" zu wget hinzugefügt. Wenn also etwas schief geht, können Sie den Download an der Stelle fortsetzen, an der der Fehler aufgetreten ist. –

1

So schien ich die Antwort auf meine eigene Frage herauszufinden. So können Sie Xcode mit curl herunterladen.

Führen Sie zuerst folgendes:

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 

Öffnen Sie die login.html-Datei, die erstellt wird und suchen für diese 2 Dinge:

  • Das action Attribut des Anmeldeformulars. Es sollte an/um Linie 54 sein.
  • Das input Feld mit dem Namen wosid. Dies sollte am/um Linie 129.

Kopieren Sie den Wert des action Attribut sowie der Wert des value Attribut des Eingabefeldes. Sie werden diese für den nächsten Schritt benötigen.

Hier ist der nächste curl Befehl:

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} Ersetzen mit dem Aktionswert Sie
  • {WOSID} mit dem wosid Wert ersetzen Den {USERNAME} und {PASSWORD} mit Ihrem Apple Dev Center Anmeldeinformationen gespeichert haben gespeichert
  • Führen Sie den Befehl

Sie sollten jetzt den Cookie haben, mit dem Sie die .dmg-Datei herunterladen können. Wenn Sie es nicht bemerkt haben, wird der Cookie in einer Datei namens cookies gespeichert.

Jetzt laufen gerade diese letzte curl Befehl und die Xcode Bild sollte das Herunterladen beginnen:

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 

Ich habe diese verschiedenen Maschinen auf 2 ausprobiert und funktioniert auf beiden.

+0

Ich versuche dies und es beginnt und stoppt bei 4kb, nachdem Sie die anderen Anweisungen ... 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 http://adcdownload.apple.com/Developer_Tools/xcode_4.0.2_and_ios_sdk_4.3/xcode_4.0.2_and_ios_sdk_4.3.dmg –

1

Hier ist ein kleiner Bash-Skript Xcode wget:

#!/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 

Kommentare die gleiche wie für Joes Lösung sind - Thnx Joe; o) Die gute Idee ist, die Traffic-Analyse von der Download-URL von Xcode zu starten .

+1

Ersetzen der Uname und Pwd und Ausführen dieses Skriptes gibt mir : ./wgetapple.sh: Zeile 14: tac: Befehl nicht gefunden Schlechter Tag für LOCATION ... –

+0

Ok 'tac' gehört nicht zu den Standardbefehlen, die auf Mac OS X installiert sind, und ich habe das beim Posten des Skripts vergessen. Das Hinzufügen von 'tac() {sed -ne '1h; 1! {G; x;}; $ {x; p;}'} nach den beiden Exporten am Anfang des Skripts sollte diesen Fehler korrigieren benutzen Macport, können Sie auch 'gtac' installieren und' tac' durch 'gtac' ersetzen: o) – denis

14

Hier ist ein Skript, das curl anstelle von wget verwendet, so dass es auf einem Standard-Mac funktioniert. Sie müssen nur den Pfad zur xcode DMG-Datei angeben. Das Skript fragt Sie nach Ihrem Benutzernamen und Passwort und es wird die ACTION und WOSID Werte für Sie herausfinden.

#!/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 
+1

Dieses Skript funktioniert nicht mehr.Vielleicht haben sich die URLs geändert? – thiagoveloso

3

Nicht optimal, aber für mich funktioniert:

Wenn Sie wissen direkte URL zum Download bereit (zB Sie begonnen Download), dann können Sie log-in auf Entwicklerportal und führen Sie den folgenden JS in der Konsole:

copy('wget -c http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_5_za4gu6/xcode_6_beta_5.dmg --header="Cookie:' + document.cookie + '"') 

Diese in Zwischenablage wget Befehl mit allen notwendigen kopiert Cookies für wget zu arbeiten. Sie können diesen Befehl jederzeit neu starten, um fortzufahren.

17

Vielleicht ist dies der einfachste Weg, curl zu verwenden:

  • offen Google Chrome.app;
  • zur Website developer.apple.com;
  • Presse CMD + SHIFT + J oder klicken Sie oben rechts Menu Symbol ->Tools ->Developer Tools;
  • klicken Sie auf Network Panel;
  • Klicken Sie jetzt auf Xcode Download-Link bei apple.com;
  • Sie sehen einen oder mehrere Request-Datensätze im Network Panel; Klicken Sie mit der rechten Maustaste auf den neuesten Datensatz und anschließend auf Copy as cURL;

Nun haben Sie den Curl-Befehl für diesen Download-Link mit Cookies und andere http-requeset-Felder, fügen Sie einfach zu Ihrem Terminal und fügen -o xxx.dmg am Ende.

+2

Hinzufügen von '-L -C -' am Ende (nach dem Vorschlag' -o xxx.dmg'), können Sie ** vorherige Downloads ** fortsetzen Download unterbrochen serverseitig) – mginius

Verwandte Themen