For the first time ever, I am going to present a single, very long, video class with the title shown above.
This session will be streamed and recorded live on August 31, starting at 16:00 UTC (18:00 CEST, 09:00 PDT) and is expected to take about two and a half hours. Due to many uncertainties, the stream might of course be longer even if the end recording might get edited down a little.
[The slides] [Interactive text version][slides as pdf]
The stream will be done on my usual twitch channel:
https://www.twitch.tv/curlhacker
The agenda for this monster session might still be tweaked a little before it happens but the work in progress version is shown below. It should cover most of what curl can and knows in 2023.
There is no need to sign up. It is entirely free of charge. All you need to do to enjoy it live is to go to the above link at the correct time on the right day. You can participate and ask questions live in the designated chat while the stream is live.
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
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
- 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