YouTube-DL через прокси (необходимо экранировать знак @)

2391
Charm_quark

Я пытаюсь использовать 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] Карта прокси: [youtube] Подтверждение возраста

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

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

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

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

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

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

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

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

Файл "youtube_dl \ YoutubeDL.pyo", строка 1321, в urlopen
Файл "urllib2.pyo", строка 404, в open> Файл "urllib2.pyo", строка 422, в _open
Файл "urllib2.pyo", строка 382, ​​в
Файл _call_chain «youtube_dl \ utils.pyo», строка 410, в файле https_open «urllib2.pyo», строка 1184, в do_open

1
Нет, не работает. Charm_quark 9 лет назад 0
Извините, я просто удалил комментарий, чтобы поставить его как ответ. И поскольку он работает для `wget`, я предполагаю, что это ошибка в youtube-dl Dmitry Grigoryev 9 лет назад 0

2 ответа на вопрос

1
Dmitry Grigoryev

You should encode the @ character in your password as %40 in conformance with URI standard:

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

Since you report this doesn't work in youtube-dl, I suppose the only workaround is to avoid URI special characters in your password. Change your password to include ALPHA / DIGIT / "-" / "." / "_" / "~" if you can.

I'm not sure where the problem is, since urllib2 unquotes the password before passing it to the 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) 

and urllib2.unquote("A%401") returns A@1 as expected. Perhaps you should report this to youtube-dl devs.

извини приятель, это не сработало. Charm_quark 9 лет назад 0
Обходной путь: измените свой пароль Skaperen 9 лет назад 0
хаха, хорошо попробую, это связано с другим приложением, частью учетной записи домена .. и т. д. Charm_quark 9 лет назад 1
Я могу подтвердить эту систему кодирования @, так как% 40 в имени пользователя работает с моим прокси и youtube-dl. Проблема должна лежать на конце сервера. Теперь, если бы я только мог заставить работать https. gmlime 8 лет назад 0
-2
Inemesit Affia

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

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

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

У меня была эта проблема, и это исправило ее для меня Inemesit Affia 8 лет назад 0
Поскольку `youtube-dl` написан на Python, то, что вы сказали о" доступе к сети в виде файлов ", скорее всего, неверно. geek1011 8 лет назад 0
У меня была эта ошибка сегодня, случайно заблокировал приложение с помощью брандмауэра, перезагрузил компьютер несколько раз, я использую Windows 10 Inemesit Affia 8 лет назад 0
Я думаю, что это первое приложение Linux, если вы используете Windows, вы можете попробовать заблокировать приложение на брандмауэре и прочитать вывод. Вы можете проверить мою правку по ссылке: из комментария есть сокеты, файлы. Они предоставляют доступ к потокам байтов через интерфейс чтения / записи, который является сердцем того, что значит быть файлом Inemesit Affia 8 лет назад 0