Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem z wtyczka canal plus vod #886

Open
Piotreklabaj opened this issue Dec 15, 2022 · 70 comments
Open

Problem z wtyczka canal plus vod #886

Piotreklabaj opened this issue Dec 15, 2022 · 70 comments

Comments

@Piotreklabaj
Copy link

Witam po przelogowaniu we wtyczce cały czas wyskakuje błąd logowania i nie pokazuje kanałów.
Wstawiam logi
https://paste.kodi.tv/zafosirefi

@praspp
Copy link

praspp commented Dec 15, 2022

Potwierdzam, u mnie ten sam problem.

@Cinek77
Copy link

Cinek77 commented Dec 16, 2022

Chyba @hevet poprawiał błąd logowania
#852 (comment)

@Piotreklabaj
Copy link
Author

Patrzyłem na ta wtyczkę i dalej jest problem czekamy

@praspp
Copy link

praspp commented Dec 16, 2022

Chyba @hevet poprawiał błąd logowania
#852 (comment)

@hevet poprawił logowanie w v1.7.5.8. #852 (comment) Aktualny problem z autentykacją dotyczy najnowszej wersji wtyczki 1.7.5.9.

@hevet, @mtr81, czy możecie pomóc? Najlepiej uwzględniając wersję od @mtr81 z poprawkami "Strony głównej" i EPG na kanałach TV z dn. 04.12.2022.
#850 (comment)

@Cinek77
Copy link

Cinek77 commented Dec 16, 2022

To trzeba chyba napisać do BOK Canal+ by tak często zmian nie robili :P

@mbebe
Copy link
Owner

mbebe commented Dec 17, 2022

Wersja #852 (comment) jest identyczna z wersja 1.7.5.9 w repo, wiec logowanie jest tez takie samo.

@praspp
Copy link

praspp commented Dec 17, 2022

Wersja #852 (comment) jest identyczna z wersja 1.7.5.9 w repo, wiec logowanie jest tez takie samo.

I właśnie w tej wersji 1.7.5.9 z repo @mbebe nie działa obecnie autentykacja. Prosiłem tylko, aby przy naprawie wtyczki wziąć pod uwagę poprawki od @mtr81 z tej wersji #850 (comment)

@sydney1981
Copy link

U mnie taki sam problem jak u autora tematu - błąd logowania i nie pokazuje kanałów. Wtyczka zainstalowana na "czystym" Kodi 19.4 na Android TV.

@hevet
Copy link

hevet commented Dec 18, 2022

Z tego co wiem od @mtr81 problem z logowaniem jest dość złożony by go naprawić.

@sydney1981
Copy link

Okej, więc nie pozostaje nic innego jak poczekać, aż ktoś wpadnie na jakieś rozwiązanie tego problemu. Dzięki chłopaki za dobrą robotę tak przy okazji:)

@tluczus
Copy link

tluczus commented Dec 18, 2022

Jak najbardziej czapki z głów, miejmy nadzieję że problem niedługo zostanie rozwiązany. Bądź co bądź c+ broni się rękami i nogami aby to nie działało :( i żeby korzystać z oficjalnych aplikacji

@Piotreklabaj
Copy link
Author

Cześć chłopaki udało się rozwiązać problem?czy jeszcze walczycie?Pozdrawiam serdecznie

@hevet
Copy link

hevet commented Dec 28, 2022

Nie ma na razie prostego rozwiązania na naprawę logowania.

@Piotreklabaj
Copy link
Author

Oki dzięki za info pozdrawiam.A można zobaczyć na wtyczkę sportowa?bo wideo działa a live wyskakuje błąd odtwarzania.Logi dziś wstawię pozdrawiam

@Mariusz89B
Copy link

Mariusz89B commented Jan 1, 2023

Sprawdzcie czy znow nie trzeba poprawic regexa do autentykacji, jesli dobrze pamietam to go poprawialem ostatnim razem po zmianach na stronie c+. Niemam jak sam sprawdzic bo niemam konta u nich.

linia 797 w main.py

authresponse = re.findall('window\.__data\s*=\s*({.*?});.*?window.app_config',response.text,re.DOTALL)

Jak wysylacie logi to nalezy wlaczyc debug logging w Kodi bo inaczej nic nie widac jakie bledy sa.

@mtr81
Copy link
Contributor

mtr81 commented Jan 1, 2023

Nie. Nie chodzi o to. W sumie to wiadomo o co, tylko nie wiadomo jak to zautomatyzować.

@Mariusz89B
Copy link

@mtr81 jaki jest dokladnie problem, moze bede wstanie pomoc?

@mtr81
Copy link
Contributor

mtr81 commented Jan 1, 2023

Trzeba podać ciasteczko, które musi przejść autoryzację. Autoryzacja odbywa się poprzez wysłanie na serwer POST-em danych, które dostarcza pewien wredny skrypt. Przedmiotowy skrypt okresowo się zmienia.

@mbebe
Copy link
Owner

mbebe commented Jan 2, 2023

Problem jest w cookie _abck
https://www.zenrows.com/blog/bypass-akamai#akamais-sensor-data

tam jest wysylany podwojnie fingerprint i po drugim razie , jesli jest true _abck jest jakby otwarte - zmiana jest m.in. z
.....5604A3~-1~YAAQ..... .......AA2325~0~YAAQ......
jesli jest w _abck ~0~ tzn., ze ciastko jest poprawne i je mozna wyslac podczas logowania.
:-/

@mtr81
Copy link
Contributor

mtr81 commented Jan 2, 2023

Generalnie, tak na szybko, to najlepiej skopiować w/w ciastko z przeglądarki do wtyczki (koniecznie sprawdzając czy skrypt odpowiedzialny za zamieszanie odpali się na www). Potem zalogować się we wtyczce i uwalić ponowne przelogowanie przy wejściu do wtyczki,żeby nie sypało błędem. Zrobiłem tak z dwa tygodnie temu. Od tego momentu wtyczka działa.

@praspp
Copy link

praspp commented Jan 3, 2023

@mtr81 Podpowiesz, w jakie miejsce w strukturze plików wtyczki powinienem wkopiować to ciastko i jak wyłączyć przelogowanie?

@mtr81
Copy link
Contributor

mtr81 commented Jan 3, 2023

Takie rzeczy to tylko na priv. Nie chcę tu mieszać, bo nie każdy to ogarnie.

@praspp
Copy link

praspp commented Jan 3, 2023

Delete

@Piotreklabaj
Copy link
Author

Jak można prosić tak troszkę jaśniej było by fajnie.Pozdrawiam

@marcin-szczepanski
Copy link
Contributor

marcin-szczepanski commented Jan 3, 2023

Takie rzeczy to tylko na priv. Nie chcę tu mieszać, bo nie każdy to ogarnie.

@mtr81 To ja też poproszę o pomoc: marcin.szczepanski1995 (at) gmail.com

@Mariusz89B
Copy link

Mariusz89B commented Jan 3, 2023

Problem jest w cookie _abck https://www.zenrows.com/blog/bypass-akamai#akamais-sensor-data

tam jest wysylany podwojnie fingerprint i po drugim razie , jesli jest true _abck jest jakby otwarte - zmiana jest m.in. z .....5604A3~-1~YAAQ..... .......AA2325~0~YAAQ...... jesli jest w _abck ~0~ tzn., ze ciastko jest poprawne i je mozna wyslac podczas logowania. :-/

Tak, zgadza sie. jedynie _abck nalezy zweryfikowac za pomoca VAC i wtedy pojawia sie response. Wyglada na to ze kod ponizej dziala, tylko jak wydostac sensor data?

EDIT:
Ok zeby wydostac sensor data trzeba rozwiazac Akamai Javascript challenge, moze byc trudno.

import requests
import re

sess = requests.Session()

headers = {
    'authority': 'logowanie.pl.canalplus.com',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-language': 'sv',
    'dnt': '1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Linux; Android 11; sdk_gphone_x86 Build/RSR1.201013.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 pass_sso',
}

response = sess.get(
    'https://logowanie.pl.canalplus.com/login',
    headers=headers,
    verify=False
)

cookies = response.cookies.get_dict()
#for k, v in cookies.items():
    #print(f'{k}: {v}\n')

vac_regex = re.compile(r'<script type="text/javascript"  src="([^"]+)')
r = vac_regex.search(response.text)
vac = r.group(1) if r else ''

akamai_regex = re.compile(r'<script type="text/javascript" src="(.*?)"  defer></script>')
r = akamai_regex.search(response.text)
akamai = r.group(1) if r else ''

execution_regex = re.compile(r'execution" value="([^"]+)')
r = execution_regex.search(response.text)
execution = r.group(1) if r else ''

#print(f'execution: {execution}')
#print(f'akamai: {akamai}')
#print(f'vac: {vac}')

if execution:
    cookies = {
        'LAST_LOGIN_PAGE_SERVICE_ID': cookies['LAST_LOGIN_PAGE_SERVICE_ID'],
        'canal+app': cookies['canal+app'],
        'TS016c93a3': cookies['TS016c93a3'],
        'bm_sz': cookies['bm_sz'],
        'dcsource': 'direct',
        'dcmedium': 'none',
        'dcid': 'none',
        'dctraffic': 'direct / none',
        '_abck': cookies['_abck'],
        'ak_bmsc': cookies['ak_bmsc'],
    }

    headers = {
        'authority': 'logowanie.pl.canalplus.com',
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'accept-language': 'sv',
        'dnt': '1',
        'origin': 'https://logowanie.pl.canalplus.com',
        'referer': 'https://logowanie.pl.canalplus.com/login',
        'upgrade-insecure-requests': '1',
        'user-agent': 'Mozilla/5.0 (Linux; Android 11; sdk_gphone_x86 Build/RSR1.201013.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 pass_sso',
    }

    vac_response = sess.get(
        f'https://logowanie.pl.canalplus.com{vac}',
        cookies=cookies,
        headers=headers,
        verify=False
    )

    akamai_response = sess.get(
        f'{akamai}',
        cookies=cookies,
        headers=headers,
        verify=False
    )

    ### Wydaje mi sie ze to JS z akamai_response nalezy rozwiazac i wprowadzic jako sensor_data fingerprint.

    data = '{"sensor_data":"xxx"}'

    vac_post_response = sess.post(
        f'https://logowanie.pl.canalplus.com{vac}',
        cookies=cookies,
        headers=headers,
        data=data,
        verify=False
    )

    cookies = {
        'LAST_LOGIN_PAGE_SERVICE_ID': cookies['LAST_LOGIN_PAGE_SERVICE_ID'],
        'canal+app': cookies['canal+app'],
        'TS016c93a3': cookies['TS016c93a3'],
        'bm_sz': cookies['bm_sz'],
        'dcsource': 'direct',
        'dcmedium': 'none',
        'dcid': 'none',
        'dctraffic': 'direct / none',
        '_abck': vac_post_response.cookies.get_dict()['_abck'],
        'ak_bmsc': cookies['ak_bmsc'],
    }

    data = {
        'username': 'xxx',
        'password': 'xxx',
        'execution': execution,
        '_eventId': 'submit',
        'geolocation': '',
        }

    response = sess.post('https://logowanie.pl.canalplus.com/login', cookies=cookies, headers=headers, data=data, verify=False)
    print(response)

@SBPrime
Copy link

SBPrime commented Jan 6, 2023

@Mariusz89B zrobiłem kilka eksperymentów z użyciem adblocka i czystymi ciasteczkami.

  1. Jestem w stanie zalogować się (w przeglądarce) jeśli zablokuje dostęp do skryptów akamai (nawet nie są pobierane).
  2. Zablokowanie dostępu do skryptu vac powoduje, że logowanie się nie udaje (błąd access denied)

Flow wygląda mniej więcej tak:

  1. GET login --> w odpowiedzi dostajemy cookies _abck
  2. GET vac script
  3. GET akamai --> zablokowane przez adblocka
  4. POST vac script z sensor_data --> w odpoweidzi nowy cookies _abck
  5. Klikając login wszystko działa.

POST leci ze skryptu VAC pobrany w pkt 2, a przynajmniej tak to wygląda w stack trace przy żądaniu POST.

@mtr81
Copy link
Contributor

mtr81 commented Jan 6, 2023

@SBPrime jak generujesz wartość sensor_data?

@SBPrime
Copy link

SBPrime commented Jan 6, 2023

Nie generowałem nic to był prosty test z użyciem firefox'a. Przeglądarka ściągnęła skrypt vac, potem go odpaliła a on zrobił posta z sensor_data. Mam zamiar przelecieć ten skrypt przy użyciu js2py, może coś ciekawego z tego wyniknie. Martwi mnie to, że skrypt sam w sobie robi posta :(

@SBPrime
Copy link

SBPrime commented Jan 8, 2023

@Mariusz89B jak chcesz możemy spróbować razem coś pokombinować, jak masz discord'a możesz się do mnie odezwać: SBPrime#5566.

@Mariusz89B
Copy link

@Mariusz89B jak chcesz możemy spróbować razem coś pokombinować, jak masz discord'a możesz się do mnie odezwać: SBPrime#5566.

Nie mogę dodać Cię do znajomych, musisz odblokować Discorda. :)

@SBPrime
Copy link

SBPrime commented Jan 8, 2023

@Mariusz89B jak chcesz możemy spróbować razem coś pokombinować, jak masz discord'a możesz się do mnie odezwać: SBPrime#5566.

Nie mogę dodać Cię do znajomych, musisz odblokować Discorda. :)

Sorry poprawiłem

@Piotreklabaj
Copy link
Author

Witam czy udało się coś ustalić.Pozdrawiam

@Marsiak
Copy link

Marsiak commented Feb 10, 2023

Takie rzeczy to tylko na priv. Nie chcę tu mieszać, bo nie każdy to ogarnie.

Dzień dobry.
Czy ja również mógłbym prosić o podpowiedź?
permail (at) o2.pl
Dziękuję
Marcin

@kedarz
Copy link

kedarz commented Feb 11, 2023

Generalnie, tak na szybko, to najlepiej skopiować w/w ciastko z przeglądarki do wtyczki (koniecznie sprawdzając czy skrypt odpowiedzialny za zamieszanie odpali się na www). Potem zalogować się we wtyczce i uwalić ponowne przelogowanie przy wejściu do wtyczki,żeby nie sypało błędem. Zrobiłem tak z dwa tygodnie temu. Od tego momentu wtyczka działa.

Moze jednak maly tutorial, kto ogarnie bedzie mial a kto nie, to bedzie czekal na poprawke.

@Marsiak
Copy link

Marsiak commented Feb 11, 2023

Dziękuję bardzo za instrukcje!
Wszystko działa idealnie.

Pozdrawiam i jeszcze raz dziękuję za wysiłki i świetną robotę!

@robertczw
Copy link

A które ciasteczko? gdzie je znaleźć?
To może przydałaby się opcja "logowania przez ciasteczko" w ustawieniach wtyczki i po sprawie?

@Eror83
Copy link

Eror83 commented Feb 20, 2023

Hej, jeśli udało się rozwiązać problem to jest szansa na aktualizację wtyczki w najbliższym czasie? Tak to na Kodi 20 jest martwa, nie udaje się zalogować. Z góry dzięki za poświęcony czas.

@pipenik43
Copy link

Mogę też prosić o instrukcje- pipen_mex (at) o2.pl

@tluczus
Copy link

tluczus commented Feb 24, 2023

Jeśli by była możliwość też bym prosił o instrukcje. tluczus(at)gmail.com

@mtr81
Copy link
Contributor

mtr81 commented Mar 21, 2023

Nie wrzucajcie już tu maili, bo instrukcji już nie wysyłam.

@miniworm
Copy link

Nie wrzucajcie już tu maili, bo instrukcji już nie wysyłam.

To co teraz można zrobić żeby uruchomić wtyczkę? Będzie nowa wersja?

@hevet
Copy link

hevet commented Mar 25, 2023

Trzeba poprosić @mbebe by coś zadziałał w tym kierunku.

@miniworm
Copy link

Prosimy!

@salustre
Copy link

Cześć, czy jest jakiś postęp w tym temacie?

@tluczus
Copy link

tluczus commented Apr 18, 2023

Przypuszczam ze nie bedzie juz tej wtyczki, za duzo roboty albo poprostu sie nie da :(

@salustre
Copy link

@mbebe dodasz coś od siebie?

@miniworm
Copy link

@mbebe Czy jeśli to kwestia ciastka i automatyzacji to nie można byłoby albo opisać to co trzeba zrobić ręcznie i albo ktoś zrobi albo nie i to już jego sprawa? W ten sposób jak ktoś ma umiejętności to zrobi to i będzie miał a jak nie to już jego problem.

@UncleHoSzczecin
Copy link

Ja się zupełnie nie znam na tworzeniu wtyczek czy programowaniu ale jeśli problem leży w ciasteczkach to może podpowie sposób w jaki Paco8 zrobił wtyczkę do Skyshowtime?
Opis jak pobrać z przeglądarki oraz dwie aplikacje na Windows i na Android pobierające właściwe ciasteczko.

@mm1992
Copy link

mm1992 commented Jul 21, 2023

Tak jak pisałem w #963, czy nie warto po prostu zrobić wersję wtyczki z logowaniem poprzez ciasteczko? Tzn. w ogóle bez zapisywania loginu i hasła w ustawieniach wtyczki (notabene, to bardziej bezpieczne).
Ciasteczko user by pobierał na własną rękę za pośrednictwem narzędzi dla programisty w przeglądarce.
Sam bym może popatrzył, ale od dawna nie mam tam subskrypcji, a poza tym nie gwarantuję czy to ogarnę.

@mm1992
Copy link

mm1992 commented Jul 25, 2023

APEL do osób z umiejętnościami, które tu pisały (szczególnie do @mtr81 który podobno miał rozwiązanie).
Jeżeli znacie sposób jak krok po kroku zrobić logowanie, wyciągając z przeglądarki TYLKO JEDNO cookie, to _abck, to niech da znać.
Ja próbowałem i mi nie wychodziło. Tym bardziej że tam było rozwiązanie, gdzie trzeba było dwa razy wysyłać zapytanie do strony logowania (sic!) i zwracało różne wyniki cookie, a co gorsza do drugiego cookie były potrzebne dane z cookie pierwszego.
Jeżeli nie, to nie przychodzi mi nic innego do głowy, jak zrobić skrypt Javascript do przeglądarki, który wyciągnie potrzebne dane i zrobi z nich jakiegoś sensownego JSON-a, aby potem to przekleić do ustawień wtyczki.

@Gizior89
Copy link

Gizior89 commented Aug 14, 2023

@mm1992 pogódź się z tym, że to już raczej martwy temat, a rozwiązania byłyby tylko chwilowe. C+ online już nawet na telefonach za 2 koła zrobił restrykcje takie ze tylko w SD działa

@miniworm
Copy link

@Gizior89 Ale my tu nie rozmawiamy o kwestii ograniczenia rozdzielczości do SD tylko o możliwości zalogowania się i odtworzenia czegokolwiek (nawet w SD).

@mtr81
Copy link
Contributor

mtr81 commented Aug 14, 2023

Ale sytuacja jest podobna. Canal+ nie życzy sobie odtwarzania treści za pomocą zewnętrznych aplikacji czemu daje wyraz wprowadzając zmiany w kodzie. Czego jeszcze nie rozumiesz?

@miniworm
Copy link

miniworm commented Aug 14, 2023

Żadna stacja nie życzy sobie tego pisząc o tym jasno w warunkach usługi. Wszystkie wprowadzają odpowiednie zmiany w kodzie. A jednak wtyczki do Kodi powstają. Czego nie rozumiesz?
Ta wtyczka przeszła już ileś podobnych zmian. Również obecnie odpowiednie zmiany w kodzie wtyczki zostały zrobione wraz z opisem jak pobrać odpowiednie ciastko. Tyle, że było to rozsyłane pojedynczym osobom na maile jako paczka do ręcznej instalacji. Natomiast nie upubluczniono tych zmian. I o to tu prosimy. Czego nie rozumiesz?
To bardzo kulturalny styl rozmowy „czego nie rozumiesz?

@mtr81
Copy link
Contributor

mtr81 commented Aug 14, 2023

Szanowny Panie. Zamiast tłuc głupoty na klawiaturze weź się do roboty, popraw kod i wtedy będziesz decydował o sposobie jego dystrybucji. A dopóki będzie nieustanne marudzenie o wtyczkę osób, które nic nie wnoszą do rozwoju pluginów to kultury się nie spodziewaj. Inna rzecz - ile można tłumaczyć to samo. BTW. napisałeś do autora wtyczki prośbę o poprawkę?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests