Подтвердить что ты не робот

Загрузка Xcode с wget или curl

Я пытаюсь загрузить Xcode с сайта Apple Developer, используя только wget или curl. Я думаю, что я успешно храню файл cookie, который мне нужен для загрузки файла .dmg, но я не совсем уверен.

Когда я запускаю эту команду:

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, который содержит ту же информацию, что и файл cookies.txt wget, за исключением того, что строки меняются на противоположные.

Затем я попытался загрузить файл .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 октября потому что этот парень, похоже, что-то делает правильно.

Спасибо заранее!

4b9b3361

Ответ 1

Для Chrome

  • Установите cookie.txt Расширение Chrome
  • Войдите в сайт разработчика Apple и получите URL-адрес для загрузки
  • Запустите расширение файла cookie.txt и загрузите файл cookie.txt
  • В каталоге загрузки файлов cookie загрузите файлы cookie в wget и начните возобновление загрузки. Например, чтобы загрузить Xcode_7.dmg, вы должны запустить:

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

Ответ 2

Возможно, это самый простой способ использовать завиток:

  • открыть Google Chrome.app;
  • сайт goto developer.apple.com;
  • нажмите CMD + SHIFT + J или нажмите на верхний правый значок MenuToolsDeveloper Tools;
  • нажмите Network панель;
  • теперь нажмите ссылку Xcode скачать на apple.com;
  • вы увидите одну или несколько записей запроса на панели Network;
  • щелкните правой кнопкой мыши самую последнюю запись, затем нажмите Copy as cURL;

Теперь у вас есть команда curl для этой ссылки для загрузки с куки файлами и другими полями http-requeset, просто вставьте свой терминал и добавьте -o xxx.dmg в конец.

Ответ 3

Вот script, который использует curl вместо wget, поэтому он будет работать на складе Mac. Все, что вам нужно установить, - это путь к файлу DMX xcode. script запросит у вас имя пользователя и пароль и он будет определять значения ACTION и 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

Ответ 4

Я только что пошел по той же дороге после неоднократного сбоя, чтобы загрузить последнюю версию Xcode прямо на мою машину Mac dev. Я также не мог заставить Дэниела работать так, как написано.

Это то, что работало для меня:

  • Используется Firefox для входа в центр iOS dev

  • Использовать Cookie Exporter 1.5 для сохранения файлов cookie в текстовый файл, скажем, "cookies.txt"

  • FTP'd cookies.txt на промежуточном сервере, который имеет приятную толстую трубку в Интернете

  • Используется wget с промежуточного сервера для загрузки файла (около 5 минут)

  • Используется FTP для переноса файла DMG на мою машину dev (около 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

Хитрость здесь заключается в том, чтобы НЕ использовать ссылку для загрузки со страницы, а чтобы начать загрузку, используйте контекстное меню в списке загрузки "Копировать ссылку для скачивания".

Ответ 5

Не оптимально, но работает для меня:

Если вам известен прямой 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. Вы можете перезапустить эту команду в любое время, чтобы продолжить.

Ответ 6

Итак, мне показалось, что я отвечу на свой вопрос. Здесь вы можете скачать Xcode с помощью curl.

Сначала запустите это:

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 Dev Center
  • Замените {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

Я пробовал это на двух разных машинах и работает на обоих.

Ответ 7

Здесь немного bash script для 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

Комментарии те же, что и для joe Solution - Thnx Joe; o) Хорошая идея - начать анализ трафика с URL-адреса загрузки Xcode.