Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Downloading Xcode with wget or curl

I am trying to download Xcode from the Apple Developer site using just wget or curl. I think I am successfully storing the cookie I need to download the .dmg file, but I am not completely sure.

When I run this command:

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

A file called cookies.txt is created and contains something like this:

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

I'm not completely certain, but I think there should be more to it than that (specifically, an alphanumeric string after sessionToken).

When I try to do the same thing with curl using this:

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

I get a file called xcode-cookie that contains the same information as the cookies.txt file wget gives me, except that the lines are reversed.

I then tried to download the .dmg file.

Using 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

This gives me a file called 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 , which is just an HTML page containing the login form for the developer site.

Using 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

Which prints basically the same thing as wget (minus the HTML).

I want to say it has to do with the sessionToken not being in the cookie, but like I said before I am not sure. I even tried exporting the cookies from my browser and following the instructions in the blog post I linked below and several other sites I found while searching for help.

I must be doing something wrong, unless Apple has changed something since Oct. 10 because this guy seems to be to do something right.

Thanks in advance!

like image 674
Joe Avatar asked Nov 02 '10 19:11

Joe


People also ask

How do I download curl files on Mac?

In fact, you can easily download any files from the web by using the command line on a Mac. The next time you have a file you want to download, just copy the URL into your clipboard, then open a Terminal window and use the 'curl' command. The file destination URL should be prefixed with http for the web.

How speed up Xcode install?

Faster install with xip and deleting previous Xcode firstapp to /Applications immediately but delete the existing /Applications/Xcode. app first. I guess this is related to Finder first getting the list of those thousands of files in the Xcode. app before the update.

Can Catalina run Xcode?

The latest version of Xcode you can run on Catalina (10.15. 4) is Xcode 12.4 and Command Line Tools 12.4.


2 Answers

For Chrome,

  1. Install cookies.txt Chrome extension
  2. Login to Apple Developer site and get the url for downloading
  3. Run cookies.txt extension and download cookies.txt file
  4. From the cookies.txt download directory, load cookies into wget and start resumable download. For example, to download Xcode_7.dmg, you would run:

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

like image 87
petert Avatar answered Oct 16 '22 05:10

petert


Maybe this is the easiest way to use curl:

  • open Google Chrome.app;
  • goto site developer.apple.com;
  • press CMD+SHIFT+J or click top-right Menuicon -> Tools -> Developer Tools;
  • click Network panel;
  • now click Xcode download link at apple.com;
  • you will see one or more request records in the Network panel;
  • right click the latest record, then click Copy as cURL;

Now, you got the curl command for this download link with cookies and other http-requeset-fields, just paste to your terminal and add -o xxx.dmg at the end.

like image 45
Ethan Avatar answered Oct 16 '22 06:10

Ethan