1

Я пытаюсь использовать youtube-dl, используя команду ниже, в Windows 7.

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

Имя пользователя:a12345

пароль:A @ 1

прокси: proxy.com

Ниже приведен ответ, который я получаю.

  [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'),))

Я подозреваю, что это знак @ в пароле, но я не могу избежать его, поскольку он рассматривается как нормальный символ.

с многословным

[debug] Конфигурация системы: [] [debug] Конфигурация пользователя: [] [debug] Командная строка

args: ['--proxy', ' http://a12345: A%401@proxy.com: 8080/ ',

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

Кодировки: локаль cp1252, fs mbcs, out cp437, pref cp1252 [debug]

версия youtube-dl 2014.11.27 [отладка] версия Python 2.7.8 -

Версии Windows-7-6.1.7601-SP1 [debug] exe: ffmpeg N-68102-, ffprobe N-68102- [debug] Карта прокси: {u'http ':' http://a12345:% 401 @ proxy .com: 8080/ ', u'https':

' http://a12345: A%401@proxy.com: 8080/ '} [youtube] Подтверждение возраста

ВНИМАНИЕ: Невозможно подтвердить возраст:

была сделана попытка получить доступ к сокету способом, запрещенным его доступом

права доступа> [youtube] 2bZd5r0iPGc: загрузка веб-страницы ОШИБКА: невозможно

скачать веб-страницу:

получить доступ к сокету способом, запрещенным его правами доступа>

(вызвано URLError(ошибка (10013, 'Была сделана попытка получить доступ к

сокет в пути, запрещенном его правами доступа '),))

Файл "youtube_dl\extractor\common.pyo", строка 273, на _request_webpage

Файл "youtube_dl\YoutubeDL.pyo", строка 1321, в урлопене
Файл "urllib2.pyo", строка 404, в открытом> Файл "urllib2.pyo", строка 422, в _open
Файл "urllib2.pyo", строка 382, в _call_chain
Файл "youtube_dl\utils.pyo", строка 410, в файле https_open. Файл "urllib2.pyo", строка 1184, в файле do_open.

2 ответа2

1

Вы должны закодировать символ @ в своем пароле как %40 в соответствии со стандартом URI:

http://a12345:A%401@proxy.com:8080/

Поскольку вы сообщаете, что это не работает в youtube-dl, я полагаю, что единственный обходной путь - избегать использования специальных символов URI в вашем пароле. Измените свой пароль, чтобы включить ALPHA / DIGIT / "-" / "." / "_" / "~" если можете.

Я не уверен, где проблема, так как urllib2 снимает кавычки с пароля, прежде чем передать его прокси:

    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)

и urllib2.unquote("A%401") возвращает A@1 как и ожидалось. Возможно, вам следует сообщить об этом разработчикам youtube-dl.

-2

Проверьте, заблокирован ли Youtube-dl вашим брандмауэром, если вы используете брандмауэр уровня приложения. Поскольку он не имеет цифровой подписи, некоторые брандмауэры могут блокировать его по умолчанию

Ошибка, отображаемая как проблема с доступом к файловой системе, связана с тем, что это приложение, портированное из unix, где сетевой доступ может быть представлен в виде файлов (я предполагаю, что вы не внесли изменений в разрешения файловой системы).

См. Https://unix.stackexchange.com/questions/157351/why-are-tcp-ip-sockets-considered-open-files.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .