youtube-dl através de Proxy (precisa escapar do sinal @)

1

Estou tentando usar o youtube-dl, usando o comando abaixo, no windows 7.

youtube-dl.exe --proxy "http://a12345:A@[email protected]:8080/" https://www.youtube.com/watch?v=XzZJuEDQ1a0

nome de usuário: a12345

senha: A @ 1

proxy: proxy.com

O abaixo é a resposta que estou recebendo.

  [youtube] Confirming age
    WARNING: Unable to confirm age: <urlopen error [Errno 10013] An attempt was made
     to access a socket in a way forbidden by its access permissions>
    [youtube] XzZJuEDQ1a0: Downloading webpage
    ERROR: Unable to download webpage: <urlopen error [Errno 10013] An attempt was m
    ade to access a socket in a way forbidden by its access permissions> (caused by
    URLError(error(10013, 'An attempt was made to access a socket in a way forbidden
     by its access permissions'),))

Eu suspeito que é o sinal @ na senha, mas eu não consigo escapar dele que é tratado como um caractere normal.

com verbose

[debug] System config: [] [debug] User config: [] [debug] Command-line

args: ['--proxy', 'http://a12345:A%[email protected]:8080/',

'https://www.youtube.com/watch?v=2bZd5r0iPGc', '--verbose'] [debug]

Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252 [debug]

youtube-dl version 2014.11.27 [debug] Python version 2.7.8 -

Windows-7-6.1.7601-SP1 [debug] exe versions: ffmpeg N-68102-, ffprobe N-68102- [debug] Proxy map: {u'http': 'http://a12345:A%[email protected]:8080/', u'https':

'http://a12345:A%[email protected]:8080/'} [youtube] Confirming age

WARNING: Unable to confirm age:

attempt was made to access a socket in a way forbidden by its access

permissions> [youtube] 2bZd5r0iPGc: Downloading webpage ERROR: Unable

to download webpage:

to access a socket in a way forbidden by its access permissions>

(caused by URLError(error(10013, 'An attempt was made to access a

socket in a way forbidden by its access permissions'),))

File "youtube_dl\extractor\common.pyo", line 273, in _request_webpage

File "youtube_dl\YoutubeDL.pyo", line 1321, in urlopen
File "urllib2.pyo", line 404, in open > File "urllib2.pyo", line 422, in _open
File "urllib2.pyo", line 382, in _call_chain
File "youtube_dl\utils.pyo", line 410, in https_open File "urllib2.pyo", line 1184, in do_open

    
por Charm_quark 23.04.2015 / 13:07

2 respostas

1

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.

    
por 23.04.2015 / 14:26
-2

Verifique se o Youtube-dl está bloqueado pelo seu firewall, se você usar um firewall no nível do aplicativo. Como não é assinado digitalmente, alguns firewalls podem bloqueá-lo por padrão

O erro aparecendo como um problema de acesso ao sistema de arquivos tem a ver com o fato de que é um aplicativo portado do unix, onde o acesso à rede pode ser representado como arquivos (suponho que você não tenha feito alterações no sistema de arquivos)

Veja link

    
por 23.10.2015 / 09:27