Actually, the "protocol" here is the proxy's not the requests, which we don't know yet. You need to set both the 'http' and 'https' protocols to '://'.join((protocol, url))