Você deve codificar o caractere @
em sua senha como %40
em conformidade com o padrão URI:
http://a12345:A%[email protected]:8080/
Como você relata que isso não funciona no youtube-dl, suponho que a única solução alternativa seja evitar caracteres especiais URI na sua senha. Altere sua senha para incluir ALPHA / DIGIT / "-" / "." / "_" / "~"
, se puder.
Não sei ao certo onde está o problema, pois o urllib2 desquota a senha antes de transmiti-la ao proxy:
if '@' in host:
user_pass, host = host.split('@', 1)
user_pass = base64.encodestring(unquote(user_pass)).strip()
req.add_header('Proxy-Authorization', 'Basic '+user_pass)
e urllib2.unquote("A%401")
retornam A@1
conforme o esperado. Talvez você deva relatar isso para o youtube-dl devs.