2013-01-16 18 views
6

Próbuję zrobić bookmarklet do wykorzystania na youtube i innych stronach wideo, aby łatwo uzyskać informacje z wideo i przechowywać je w innym miejscu.skryptozakładka na stronie https

Od dzisiaj najwyraźniej już nie mogę tego zrobić, ponieważ youtube wymusza na sobie połączenie https i z tego, co przeczytałem w oknie konsoli chrome, bookmarklet nie działa na stronie https. Czy jest w pobliżu praca?

Oto edytowany kod:

javascript:(function(){var jsCode=document.createElement('script');jsCode.setAttribute('src','http://[mysite]/b/enter.php?i=userid&r='+Math.random());document.body.appendChild(jsCode);}()); 
+0

Czy to zachowanie występuje w przeglądarkach oprócz Google Chrome? Które przeglądarki uruchamiają skryptozakładkę, a które nie? – apsillers

+0

Czy witryna obsługuje https? – epascarello

+0

Wygląda na to, że Chrome blokuje go, a Firefox nie. Niestety nie mam stałego adresu IP, więc nie mogę użyć certyfikatu SSL. To tylko projekt dla zwierząt domowych. Gdybym miał użytkowników zainteresowanych może mógłbym to zmienić lub znaleźć inny sposób na łatwe przechowywanie linków youtube. – maugch

Odpowiedz

6

Google Chrome (i prawdopodobnie inne przeglądarki?) Blokuje dostęp do zasobów HTTP z dokumentu HTTPS. Ma to na celu zapobieganie atakom "mixed content", w których niezabezpieczone skrypty HTTP mogą być przesyłane przez sieć w postaci intercepted by an attacker i zmieniane w celu wykonania dowolnego złośliwego działania (np. Wyciek plików cookie lub informacje poufne strony trzeciej). Takie naruszenie spowodowałoby cofnięcie wszelkiej ochrony udzielonej przez HTTPS.

Chrome używał ostrzeżenia, że ​​niebezpieczny zasób został zablokowany, ale teraz już go nie ma i wszystkie niebezpieczne ładunki po cichu zawierują. Jedynym dostępnym obecnie rozwiązaniem jest używanie HTTPS podczas obsługi skryptu.

+0

IE 10 daje także ostrzeżenie o niebezpiecznej zawartości i daje możliwość zezwolenia na uruchamianie treści, ale wymaga odświeżenia po wydaniu opcji w mojej opinii. – YiddishNinja

3

bookmarklet nie działa na stronie https

Dlaczego nie?

Spróbuj samodzielnie zmienić domenę HTTPS. Zwykle zawartość HTTP jest blokowana, gdy korzystasz z domeny HTTPS.

+0

Nie mam certyfikatu ani stałego adresu IP, aby to zrobić. – maugch

+0

Sprawdź, czy działa, jeśli przełączysz się na HTTPS i uzyskasz certyfikat, tak naprawdę nie ma dla niego nic innego. – Halcyon

4

W Firefoksie, jeśli chcesz uruchomić skryptozakładkę odwołującą się do http na stronie https, sposobem obejścia tego jest tymczasowe wyłączenie security.mixed_content.block_active_content. Można to zrobić na dwa sposoby.

  1. iść do about:config w nowej karcie, wyszukać security.mixed_content.block_active_content a następnie ustawić wartość do false. Uruchom skryptozakładkę, a następnie przełącz ją z powrotem na true (ponieważ prawdopodobnie chcesz ją włączyć przez większość czasu).

  2. użyj przełącznika, aby przełączyć blok. Szybkie wyszukiwanie pojawiło się Toggle Mixed Active Content, a szybki test wydawał się dobrze działać. Mogą być inni.

Baw się dobrze i bądź ostrożny. Oto smoki!

1

Utworzyłem "naprawę" obejścia tego problemu przy użyciu numeru Greasemonkey userscript. Teraz możesz mieć bookmarkslety na wszystkich stronach CSP i https: //, a także bookmarklety w ładnym, łatwym do edycji pliku bibliotecznym, zamiast pojedynczo przycinać je do zakładki.