youtube-dl przez Proxy (musisz uciec @ znak)

1

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

Charm_quark
źródło
nie, nie działa.
Charm_quark
Przepraszam, właśnie usunąłem komentarz, aby umieścić go jako odpowiedź. A ponieważ działa wget, zakładam, że jest to błąd w youtube-dl
Dmitry Grigoryev

Odpowiedzi:

1

Powinieneś zakodować @znak w swoim haśle %40zgodnie ze standardem URI:

http://a12345:A%[email protected]:8080/

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:

    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)

i urllib2.unquote("A%401")zwraca A@1zgodnie z oczekiwaniami. Być może powinieneś to zgłosić twórcom youtube-dl.

Dmitrij Grigoriew
źródło
przepraszam kolego, to nie zadziałało.
Charm_quark
obejście: zmień hasło
Skaperen
1
haha, ok spróbuje tego, jest połączony z inną aplikacją, częścią konta domeny ..etc.
Charm_quark 24.04.15
Mogę potwierdzić, że ten system kodowania @, ponieważ% 40 w nazwie użytkownika działa z moim serwerem proxy i youtube-dl. Problem musi leżeć po stronie serwera. Teraz gdybym tylko mógł uruchomić https.
gmlime,
-2

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

Inemesit Affia
źródło
Miałem ten problem i naprawiłem go
Inemesit Affia
Ponieważ youtube-dljest napisane w Pythonie, to, co powiedziałeś o „dostępie do sieci może być reprezentowane jako pliki”, jest najprawdopodobniej niepoprawne.
geek1011,
miałem ten błąd dzisiaj, przypadkowo zablokowałem aplikację za pomocą zapory, kilkakrotnie uruchomiłem ponownie komputer, korzystam z systemu Windows 10
Inemesit Affia
myślę, że jest to pierwsza aplikacja dla systemu Linux, jeśli używasz systemu Windows, możesz spróbować zablokować aplikację na zaporze i odczytać dane wyjściowe. Możesz sprawdzić moją edycję linku: od komentarza, Gniazda są plikami. Zapewniają dostęp do strumieni bajtów za pośrednictwem interfejsu odczytu / zapisu, który jest sercem tego, co to znaczy być plikiem
Inemesit Affia