Próbuję użyć youtube-dl, używając komendy poniżej w Windows 7.
youtube-dl.exe --proxy "http://a12345:A@[email protected]:8080/" https://www.youtube.com/watch?v=XzZJuEDQ1a0
nazwa użytkownika: a12345
hasło: A @ 1
proxy: proxy.com
Poniżej znajduje się odpowiedź, którą otrzymuję.
[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'),))
Podejrzewam, że jest to znak @ w haśle, ale wydaje mi się, że nie mogę uciec, że jest traktowany jak normalny znak.
z pełnym gadaniem
[debugowanie] Konfiguracja systemu: [] [debugowanie] Konfiguracja użytkownika: [] [debugowanie] Wiersz poleceń
args: ['--proxy', ' http: // a12345: A%[email protected]: 8080 / ',
„ https://www.youtube.com/watch?v=2bZd5r0iPGc ”, „--verbose”] [debugowanie]
Kodowanie: locale cp1252, fs mbcs, out cp437, pref cp1252 [debugowanie]
wersja youtube-dl 2014.11.27 [debugowanie] Wersja Python 2.7.8 -
Windows-7-6.1.7601-SP1 [wersje debugowania] exe: ffmpeg N-68102-, ffprobe N-68102- [debugowanie] Mapa proxy: {u'http ':' http: // a12345: A% 401 @ proxy .com: 8080 / ', u'https':
„ http: // a12345: A%[email protected]: 8080 / ”} [youtube] Potwierdzający wiek
OSTRZEŻENIE: Nie można potwierdzić wieku:
podjęto próbę uzyskania dostępu do gniazda w sposób zabroniony przez jego dostęp
uprawnienia> [youtube] 2bZd5r0iPGc: Pobieranie strony BŁĄD: nie można
aby pobrać stronę:
uzyskać dostęp do gniazda w sposób zabroniony przez jego uprawnienia dostępu>
(spowodowane przez URLError (błąd (10013, „Podjęto próbę uzyskania dostępu do pliku
gniazdo w sposób zabroniony przez jego uprawnienia dostępu '),))
Plik „youtube_dl \ extractor \ common.pyo”, wiersz 273, na stronie _request_web
Plik „youtube_dl \ YoutubeDL.pyo”, wiersz 1321, w urlopie
Plik „urllib2.pyo”, wiersz 404, w otwartym> Plik „urllib2.pyo”, wiersz 422, w _pen
Plik „urllib2.pyo”, wiersz 382, w _call_chain
Plik „youtube_dl \ utils.pyo”, linia 410, w https_open Plik „urllib2.pyo”, linia 1184, w do_open
źródło
wget
, zakładam, że jest to błąd w youtube-dlOdpowiedzi:
Powinieneś zakodować
@
znak w swoim haśle%40
zgodnie ze standardem URI:Ponieważ zgłaszasz, że to nie działa w youtube-dl, przypuszczam, że jedynym obejściem jest unikanie znaków specjalnych URI w haśle. Zmień swoje hasło, aby uwzględnić,
ALPHA / DIGIT / "-" / "." / "_" / "~"
jeśli możesz.Nie jestem pewien, gdzie jest problem, ponieważ urllib2 cytuje hasło przed przekazaniem go do serwera proxy:
i
urllib2.unquote("A%401")
zwracaA@1
zgodnie z oczekiwaniami. Być może powinieneś to zgłosić twórcom youtube-dl.źródło
Sprawdź, czy zapora Youtube-dl jest zablokowana, jeśli używasz zapory na poziomie aplikacji. Ponieważ nie jest podpisany cyfrowo, niektóre zapory mogą go domyślnie blokować
Błąd pojawiający się jako problem z dostępem do systemu plików ma związek z faktem, że jest to aplikacja przeniesiona z systemu Unix, gdzie dostęp do sieci może być reprezentowany jako pliki (zakładam, że nie wprowadzono żadnych zmian w uprawnieniach systemu plików)
Zobacz https://unix.stackexchange.com/questions/157351/why-are-tcp-ip-sockets-consanted-open-files
źródło
youtube-dl
jest napisane w Pythonie, to, co powiedziałeś o „dostępie do sieci może być reprezentowane jako pliki”, jest najprawdopodobniej niepoprawne.