So I first use requests.head() to download the header. I do some validation(check the status code, check content-type) if that is good I download the body. However I use requests.get() to that, but using .get() not only downloads the body but also the header which I just downloaded. So I don't need to download the header twice, anyway I can download the body of a get response if the header looks good?
You can't! This is not the way HTTP works. If you want to use less traffic you are in the right track all you need is to perform the head requests then check if you wanna get the body. If so use get.
Downloading the HTTP headers twice will not will not cost you (a lot) in performance or traffic and it's necessary.
Python requests: Anyway to download just the body of a get response?