Bawiłem się ostatnio snifferem, konkretnie Justnifferem jest do niego dołączony taki genialny skrypt
justniffer-grab-http-traffic który zapisuje kopię wszystkich plików jakie pobiera przeglądarka po http. Jest to niesamowicie wygodne gdy słucha się jakiejś muzyki na stronie - zostaje potem kopia każdej mp3ki jakiej słuchało, którą mogę potem zabrać na przenośny odtwarzacz i wyjechać na kilkudniowe wakacje z dala od internetu.
Jak go zobaczyłem to aż się prosiło zrobić sobie backup spotify na dysku, tyle, że tu nagle niespodzianka, odtwarzacz spotify nie ściąga muzyki po http tylko po rtmp, w związku z czym skrypt staje się bezużyteczny na stronie spotify.
Niby można rtmp przechwycić sposobem który opisałem tutaj ale w przypadku mp3jek było by to strasznie niewygodne aby z każdym 3 minutowym utworem tak kombinować. Zdecydowanie wolę aby sobie po prostu grało a mi została kopia (właściciele strony też pewnie byli by bardziej zadowoleni bo w ten sposób słuchał bym ich reklam).
Próbowałem znaleźć inny skrypt który wyciągnął by mi mp3ki ze strumienia rtmp, jest kilka takich które próbują parsować strumienie rtmp, jednak nie udało mi się znaleźć takiego który by tu zadziałał.
Nie należę do osób które łatwo się poddają, więc napisałem własny skrypt. Jak z tego korzystać?
najlepiej uruchomić poleceniem:
sudo justniffer -i eth0 -p "tcp port 1935" -l "%response" | ./spotify_rtmp_mp3_filter.py
a potem iść na play.spotify.com i zacząć czegoś słuchać (kolejność ma znaczenie, najpierw trzeba włączyć sniffer).
Skrypt będzie tworzył nam pliki o nazwach 001.mp3, 002.mp3 ... i tak dalej w katalogu w którym został uruchomiony (jeden utwór w jednym pliku, reklamy też zapisuje w osobnych plikach), trzeba uważać aby sobie nie nadpisać tego co było nagrywane poprzednim razem.
Można użyć też innego sniffera byle by tylko potrafił łączyć przechwycone pakiety w całość we właściwej kolejności. Każdy ma pewnie jakiś swój ulubiony sniffer :) np w wiresharku trzeba wybrać aby nasłuchiwał na porcie 1935 a gdy już zakończy się słuchanie, kliknąć któryś pakiet prawym przyciskiem i z menu kontekstowego wybrać folow tcp stream, pojawi się okienko w którym trzeba wybrać aby pokazywał jedynie odpowiedź serwera a następnie dać zapisz do pliku. Taki plik można potraktować moim skryptem aby wyciągnął z niego mp3ki:
./spotify_rtmp_mp3_filter.py plik_ze_sniffera
Uwaga to jest wstępna wersja, zdatna do użytku ale nie działa do końca tak jak bym chciał, czasem mp3ki zawierają jeszcze jakieś śmieci których nie udało się zidentyfikować - o ile mi się uda to jeszcze to poprawię.
Świetna robota! Jednak zawiodła mnie jakość na Spotify. Tylko MP3: 160 kbps, 44 kHz.
OdpowiedzUsuńhttps://www.spotify.com/us/help/faq/tech/codec-quality/
UsuńNo nie zupełnie jest to prawdą co tam piszą, bo wyraźnie widać, że korzystają z mp3 a nie vorbis.
UsuńWidać nawet, że do kodowania tych mp3jek wykorzystują lame w wersji 3.98
Albo to FAQ jest nieaktualne albo dotyczy jakiegoś innego odtwarzacza (bo spotify mona słuchać nie tylko przez przeglądarkę ale i są różne dedykowane programy).
Chyba z założenia Spotify słucha się przez dedykowanego klienta, a opcja przez przeglądarkę jest tylko opcją dodatkową. Przez jakiś czas zresztą w ogóle nie była dostępna, teraz widzę że ją udostępnili znowu - no i chyba znajdzie się wreszcie argument za tym, żeby jednak sobie zaktualizowac Firefoksa ;), bo moja wersja 3.6, której uparcie się trzymam z uwagi na przyzwyczajenie do układu całego interfejsu użytkownika, nie jest tam obsługiwana...
UsuńA co z poruszaną kwestią HBO GO?
OdpowiedzUsuńBez zmian ale ekipa sd-xbmc nadal nad tym pracuje.
UsuńEkipa SD-XBMC słabo się stara. Pobrałem ostatnio ich wtyczkę i dużo rzeczy nie śmiga...
UsuńMoże nie do końca na temat, ale czy mógłbyś poradzić jak nagrać stream live z openera z serwisu livestream.com? DO tej pory korzystałem z replay media catchera 4, ale coś zrywa po paru sekundach :( Bardzo proszę o poradę adamfo@poczta.fm
OdpowiedzUsuńTutaj wszystko ładnie opisane: http://miniskrypt.blogspot.com/2013/01/uniwersalny-sposob-na-filmboxlive-i.html
UsuńZrobisz skryptozakładki (na różne jakości) na pobieranie filmów z YouTube? Bardzo proszę.
OdpowiedzUsuńCzy można otrzymać darmowe premium na Spotify bez podawania numerów karty kredytowej?
OdpowiedzUsuńZ ciekawości patrzę i powiem tak: mi nie działa. Tworzy się plik 000.mp3, potem już żaden inny się nie tworzy, po otwarciu pliku wyświetla się error "stream contains no data". Wcześniej na maszynie wirtualnej na innym komputerze przy pierwszej próbie nagrywania coś się nagrało, ale potem to samo. Więc chyba zadowolę się zwykłym pakietem premium który mam.
OdpowiedzUsuńCzy na pewno włączyłeś sniffer przed wejściem na stron spotify?
UsuńBo jeśli włączy się go później to może mieć problemy z rozpoznaniem gdzie jest początek mp3ki.
A jeśli to nie o to chodzi to zapisz cały przechwycony ruch w pliku jeszcze przed przefiltrowaniem przez mój skrypt będzie można zobaczyć co tam takiego siedzi, że sobie nie poradził.
Witam Drogi Panie Marku. Nie wiem za bardzo jak wykonać to co jest napisane w instrukcji... Może Pan zrobić jakieś screen'y lub film lub dać jakiś link do pobrania itp... Tak samo jeśli o nagrywanie streamów LIVE. Bo nie ogarniam tych dwóch rzeczy.
OdpowiedzUsuńNagrałem film http://youtu.be/O95xyX4ckNM mam nadzieję, że taka prezentacja pomoże.
Usuńwitam a może jakiś sposób na pobieranie z polskiego radia
OdpowiedzUsuńDowolnym programem do pobierania strumieni albo do słuchania który potrafi zapisywać strumień na dysku.
UsuńNa przykład mplayer z parametrem -dumpstream
adresy
mms://stream.polskieradio.pl/program1
mms://stream.polskieradio.pl/program2
mms://stream.polskieradio.pl/program3
mms://stream.polskieradio.pl/program4
Cześć!
OdpowiedzUsuńWireShark'a to jeszcze dałem radę obsłużyć, ale jak wykorzystać Twój skrypt żeby z przechwyconych pakietów zbudował .mp3 to już nie daję rady.
Co z tym skryptem zrobić, w jakim środowisku, lub przy pomocy czego uruchomić?
Dzięki z góry za wskazówki!
Skrypt jest napisany w pythonie 2.*, najlepiej uruchamiać za pomocą pythona 2.7
UsuńPrzewiń do 1:30
http://youtu.be/O95xyX4ckNM
pokazuję tam jak wyciągnąć pliki mp3 ze strumienia przechwyconego przez wireshark.
Zainstalowałem Python 2.7 Utworzyłem katalog na partycji C i umieściłem w nim Twój skrypt, oraz plik wynikowy z WireShark'a. Klikam dwukrotnie w skrypt i otrzymuję plik .mp3 o rozmiarze 0KB.
UsuńWszystko to próbuję wykonać na WIN7
U mnie skrypt działa. Zrobiłem kilka plików i w większości z nich słychać "przeskoki" muzyki. Czasem 1 raz w utworze, czasem więcej. Czym może to być spowodowane? Używałem pythona 2.7 na Ubuntu.
OdpowiedzUsuńU mnie czasem też się to zdarza.
UsuńDane w strumieniu zawierają coś dziwnego, przypuszczam że to może być wynik retransmisji jakiegoś pakietu, ale było to na tyle rzadkie, że nie udało mi się ustalić dokładnej przyczyny. Prościej było pobrać utwór z przeskokiem raz jeszcze.
To jest dobre. Ale jest też prostszy sposób na ściąganie muzyki ze Spotify. Możesz skorzystać sobie z takiego programu, który automatycznie nagrywa słuchane przez nas utwory - goo.gl/TGuFI7
OdpowiedzUsuńA potem po prostu wrzuca MP3 Spotify na dysk komputera w trybie offline. Bez reklam i bez kłopotów.
Ale w ten sposób pogorszy się jakość muzyki bo będzie dwukrotnie stratnie skompresowany. Raz przez spotify a potem drugi raz przez program do nagrywania.
Usuńczy polecenie sudo justniffer -i eth0 -p "tcp port 1935" -l "%response" | ./spotify_rtmp_mp3_filter.py
OdpowiedzUsuńwpisuje w wierszu polecen?
Można ale lepiej w konsoli albo terminalu bo wtedy widać co się dzieje i można przerwać za pomocą ctrl+c
Usuń