Why do you use GET instead of HEAD to get the headers?
Hmm, not sure. I guess that's just how I made it. I haven't tested whether it would work with HEAD.

Initially I tried some other methods too, but didn't get enough useful stuff back to care. I tried using OPTIONS and also a nonexistent method, but didn't get any particularly unique responses.

Did you notice any difference in response to a HTTP/1.0 and HTTP/1.1 request?
Some web servers don't support HTTP/1.1, I did think of that. Just they are not the main ones I'm interested in.

Some web servers or caches send a 1.0 response to a 1.1 request, but certainly in the case of Apache, that is configureable on a per-user-agent basis (as a work around for broken clients)

I haven't tried exotic stuff like chunked responses, or partial content requests. That might be of use, but would require more effort to understand.