xcode - macosx - wget command not found macos
Descargando Xcode con wget o curl (7)
Intento descargar Xcode del sitio del Desarrollador de Apple usando solo wget o curl. Creo que estoy almacenando con éxito la cookie que necesito para descargar el archivo .dmg, pero no estoy del todo seguro.
Cuando ejecuto este comando:
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
Se cookies.txt
un archivo llamado cookies.txt
contiene algo como esto:
developer.apple.com FALSE / FALSE 0 XXXXXXXXXXXXXXXX XXXXXXXXXXXX
developer.apple.com FALSE / FALSE 0 developer.sessionToken
No estoy del todo seguro, pero creo que debería haber algo más que eso (específicamente, una cadena alfanumérica después de la sessionToken
).
Cuando trato de hacer lo mismo con Curl usando esto:
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
Obtengo un archivo llamado xcode-cookie
que contiene la misma información que el archivo cookies.txt
que me da wget, excepto que las líneas están invertidas.
Luego intenté descargar el archivo .dmg.
Usando 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
Esto me da un archivo llamado 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
, que es solo una página HTML que contiene el formulario de inicio de sesión para el sitio del desarrollador.
Usando 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
Que imprime básicamente lo mismo que wget (menos el HTML).
Quiero decir que tiene que ver con que sessionToken no está en la cookie, pero como dije antes no estoy seguro. Incluso traté de exportar las cookies desde mi navegador y siguiendo las instrucciones en la publicación de blog que he vinculado a continuación y en varios otros sitios que encontré mientras buscaba ayuda.
Debo estar haciendo algo mal, a menos que Apple haya cambiado algo desde el 10 de octubre porque este tipo parece hacer algo bien .
¡Gracias por adelantado!
Acabo de seguir por el mismo camino después de no poder descargar la última versión de Xcode directamente en mi máquina de desarrollo Mac. Tampoco pude lograr que el enfoque de Daniel funcionara exactamente como está escrito.
Esto es lo que funcionó para mí:
Utiliza Firefox para iniciar sesión en el centro de desarrollo de iOS
Usé Cookie Exporter 1.5 para guardar las cookies en un archivo de texto, diga "cookies.txt"
FTP''d cookies.txt a un servidor de puesta en escena mío que tiene un buen tubo gordo en Internet
Se usó wget del servidor de transferencia para descargar el archivo (aproximadamente 5 minutos)
Utilicé FTP para transferir el archivo DMG a mi máquina dev (aproximadamente 2 horas)
Aquí está la línea de comando de 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
El truco aquí es NO usar el enlace de descarga desde la página, sino iniciar la descarga y luego usar el menú contextual en la lista de descargas para "Copiar enlace de descarga".
Aquí hay un pequeño script bash para wget 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
Los comentarios son los mismos que para Joe''s Solution - Thnx Joe; o) La buena idea es comenzar el análisis del tráfico desde la URL de descarga de Xcode.
Aquí hay una secuencia de comandos que utiliza curl en lugar de wget, por lo que funcionará en una Mac común. Todo lo que necesita establecer es la ruta al archivo xcode DMG. El script le pedirá su nombre de usuario y contraseña, y le indicará los valores de ACCIÓN y 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
Así que parece que descubrí la respuesta a mi propia pregunta. A continuación, le mostramos cómo puede descargar Xcode usando curl.
Primero, ejecuta esto:
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
Abra el archivo login.html
que se creó y busque estas 2 cosas:
- El atributo de
action
del formulario de inicio de sesión. Debería estar en / alrededor de la línea 54. - El campo de
input
llamadowosid
. Esto debería estar en / alrededor de la línea 129.
Copie el valor del atributo de action
así como el valor del atributo de value
del campo de entrada. Lo necesitarás para el siguiente paso.
Aquí está el siguiente comando 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
- Reemplace
{ACTION}
con el valor de acción que guardó - Reemplace
{USERNAME}
y{PASSWORD}
con sus credenciales de Apple Dev Center - Reemplace
{WOSID}
con el valor wosid que guardó - Ejecuta el comando
Ahora debería tener la cookie que le permitirá descargar el archivo .dmg. Si no lo ha notado, la cookie se almacena en un archivo llamado cookies
.
Ahora ejecute este último comando curl y la imagen Xcode debería comenzar a descargarse:
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
Intenté esto en 2 máquinas diferentes y trabajo en ambas.
No es óptimo, pero funciona para mí:
Si conoce la URL directa para descargar (por ejemplo, comenzó la descarga), entonces puede iniciar sesión en el portal del desarrollador y ejecutar el siguiente JS en la consola:
copy(''wget -c http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_5_za4gu6/xcode_6_beta_5.dmg --header="Cookie:'' + document.cookie + ''"'')
Esto copiará el comando wget en el portapapeles con todas las cookies necesarias para que wget funcione. Puede reiniciar este comando en cualquier momento para continuar.
Para Chrome,
- Instala la extensión de Chrome cookies.txt
- Inicie sesión en el sitio del desarrollador de Apple y obtenga la URL para descargar
- Ejecute la extensión cookies.txt y descargue el archivo cookies.txt
Desde el directorio de descarga cookies.txt, cargue las cookies en wget y comience la descarga reanudable. Por ejemplo, para descargar Xcode_7.dmg, ejecutaría:
wget --load-cookies = cookies.txt -c http://adcdownload.apple.com/Developer_Tools/Xcode_7/Xcode_7.dmg
Tal vez esta es la forma más fácil de usar Curl:
- abrir
Google Chrome.app
; - ir al sitio
developer.apple.com
; - presione
CMD
+SHIFT
+J
o haga clic en el ícono deMenu
arriba a la derecha ->Tools
->Developer Tools
; - haga clic en el panel de
Network
; - ahora haga clic en el enlace de descarga de
Xcode
en apple.com; - verá uno o más registros de solicitud en el panel
Network
; - haga clic con el botón derecho en el último registro, luego haga clic en
Copy as cURL
;
Ahora, tienes el comando curl para este enlace de descarga con cookies y otros campos http-requeset, simplemente pega en tu terminal y agrega -o xxx.dmg
al final.