2015-01-13 14 views
5

Planuję robić pomiary ruchu w sieci podczas odtwarzania filmów. Będzie to oczywiście działać tylko wtedy, gdy wideo jest przesyłane przez HTTP zamiast HTTPS.Jak włamać się do interfejsu API JavaScript JavaScript, aby zawsze używać protokołu HTTP?

Interfejs API iframe YouTube zawsze przełącza się jednak na pobieranie HTTPS, mimo że ładuję interfejs API z http:// i podając adres URL serwisu YouTube z adresem http://. Możesz użyć urządzenia example here, aby przetestować odtwarzacz. Jak widać, zawsze przełącza się na https://videoplayback..., którą chcę wyłączyć.

Jak wymusić użycie protokołu HTTP zamiast HTTPS? Jest to rodzaj inverse question of this. Sądzę, że sprowadziłoby się do zhakowania niektórych funkcji w bieżący JS.

w API Widget widzę połączeń typu:

b = 0 == c.indexOf("https:") ? [c] : b.d ? [c.replace("http:", "https:")] : b.k ? [c] : [c, c.replace("http:", "https:")]; 

i

if (this.d = !!("https:" == document.location.protocol || a && 0 == a.src.indexOf("https:"))) { 
    a = [this.j, window.YTConfig || {}, this.defaults]; 
    for (var b = 0; b < a.length; b++) a[b].host && (a[b].host = a[b].host.replace("http://", "https://")) 
} 

ale nie mam pojęcia, gdzie to zmienić w kontekście YT i YT.Player obiektów, lub jeśli Mogę to zrobić.

Dla tych, którzy zastanawiają się, czy to może nie być możliwe po stronie serwera: Pamiętaj, że YouTube działa działa tylko z HTTP. Jeśli nie jesteś zalogowany w serwisie YouTube i nie przejdziesz na stronę http://youtube.com, odtworzenia wideo będą odbywać się w protokole HTTP, a nie HTTPS.

+0

@ Czy chcesz tylko http bez względu na to, które API jest wywoływane, domyślnie powinien pochodzić z http? czy to twoje pytanie? – anish

+0

Tak, chcę wymusić transmisję HTTP. – slhck

+0

@robert To pytanie nie ma nic wspólnego z a) pobieraniem wideo lub b) MP4 vs. MKV. YouTube nawet nie oferuje MKV jako opcji do pobrania ... ale to nie ma znaczenia: to pytanie dotyczy osadzania odtwarzacza YouTube i chciałbym, aby przesyłać strumieniowo przez HTTP zamiast HTTPS. – slhck

Odpowiedz

4

YouTube wymusza teraz https przez przekierowanie 301. Jakiś czas temu tak nie było. Przekierowanie było po prostu ustawieniem użytkownika zapisanym w pliku cookie.

Możesz spróbować zmienić agenta użytkownika i/lub test na stronie m.youtube.com, ale pomiary ruchu mogą być niedokładne, ponieważ różnią się domeną i protokołem, a youtube może mieć oddzielne priorytety.

Zmiana narzędzia użytkownika jest prosta w narzędziach deweloperskich Chrome (ikona telefonu w lewym górnym rogu).

+0

Ale kiedy wchodzę na stronę "http: // youtube.com", nie jestem zalogowany, mogę wideo wideo z prostym połączeniem HTTP. Czy to nigdy nie dotyczy interfejsu I-frame API? – slhck

+0

Jakiej przeglądarki używasz? Próbowałem Firefoksa i Chrome i zarówno w trybie "prywatności" przekierowuję do https bez względu na wszystko. –

+0

Ach, musieli to zmienić, dosłownie, w ciągu ostatnich kilku dni i nie dostałem tego 301 do chwili obecnej. Masz rację, to robi. – slhck