Skip to content

Instantly share code, notes, and snippets.

@bagder
Last active February 17, 2024 12:08
Show Gist options
  • Save bagder/253a2368c17ac6a3411af3861068fb6a to your computer and use it in GitHub Desktop.
Save bagder/253a2368c17ac6a3411af3861068fb6a to your computer and use it in GitHub Desktop.
Master curl in two hours. A video course by Daniel

The idea is to make a two and a half hour (give or take) video course explaining and detailing curl, the command line tool. How it works, how to use it, from the basics to some more advanced uses. This will be done by Daniel Stenberg, founder and lead developer of the curl project.

The recording and live-stream is scheduled for August 31, 2023. In the US morning and Euro evening.

See blog post for details.

The project (10 min)

  • start
  • name
  • products
  • open source
  • development
  • releases
  • issues
  • pull requests
  • asking for help
  • paying for help

Command line (20 min)

  • command line options
    • long vs short names
    • depends on version
  • URLs
    • scheme
    • name and password
    • host
    • port number
    • path
    • fragment
    • browsers' address bar
    • options and URLs
    • connection reuse
    • parallel transfers
  • trurl
  • URL globbing
  • List options
  • config file
  • passwords
  • progress meter
  • --next

Using curl (30 min)

  • verbose
    • --trace
    • --write-out
  • version
  • persistent connections
  • Downloads
    • What exactly is downloading?
    • Storing downloads
    • Download to a file named by the URL
    • Use the target file name from the server
    • HTML and charsets
    • Compression
    • Shell redirects
    • Multiple downloads
    • My browser shows something else
    • Maximum file size
    • Storing metadata in file system
    • Raw
    • Retry
    • Resuming and ranges
  • Uploads
  • Transfer controls
    • Stop slow transfers
    • Rate limiting
    • Request rate limiting
  • Connections
    • Name resolve tricks
    • Connection timeout
    • Network interface
    • Local port number
    • Keep alive
  • Timeouts
  • .netrc
  • Exit status
  • SCP and SFTP
  • Reading email
  • Sending email
  • MQTT
  • TFTP
  • TELNET
  • DICT
  • Copy as curl
  • --libcurl
  • https://curl.se/h2c/

TLS details (15 min)

  • ciphers
  • enable TLS
  • verifying server certificates
  • OCSP stapling
  • client certificates
  • TLS backends
  • SSLKEYLOGFILE

Proxies (20 min)

  • Discover your proxy
  • PAC
  • Captive portals
  • Proxy type
  • HTTP proxy
  • SOCKS proxy (tor)
  • MITM proxy
  • Authentication
  • HTTPS proxy
  • Proxy environment variables
  • Proxy headers

HTTP (30 min)

  • Protocol basics
  • Method
  • HTTP response codes
  • Responses
  • Authentication
  • Ranges
  • HTTP versions
  • Conditionals
  • HTTPS
  • HTTP POST
  • Multipart formpost
  • -d vs -F
  • Redirects
  • Modify the HTTP request
  • HTTP PUT
  • Cookies
  • HTTP/2
  • Alternative Services
  • HTTP/3
  • HSTS

FTP (10 min)

  • Authentication
  • Directories
  • Uploading
  • Custom FTP commands
  • Two connections
  • Directory traversing

Rounding off (5 min)

  • How to dig deeper
  • Where is curl going
@rluvaton
Copy link

rluvaton commented Jul 15, 2023

Looking forward to it!
As an open-source contributor, I think it would be great to deep dive into curl codebase!

could you update with the scheduled live stream link once you have it?

@bagder
Copy link
Author

bagder commented Jul 16, 2023

As an open-source contributor, I think it would be great to deep dive into curl codebase!

Sure, that's a fine idea but I think that's left for another video. I think we have enough already to "just" cover the command line use =)

could you update with the scheduled live stream link once you have it?

Yes. All my live-streams are always done here: https://www.twitch.tv/curlhacker

@web3Gurung
Copy link

I only have used curl for checking for status codes and scrapping data. This course seems like an intro level to how web works and how to navigate it via curl. Curious to see how it comes along!

@henri
Copy link

henri commented Aug 22, 2023

Looking forward to checking out your video :)

@JochenHayek
Copy link

is "August 31, 2023" still uptodate? I don't see a detailed time announced yet.

@bagder
Copy link
Author

bagder commented Aug 30, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment