mbebe / blomqvist

blomqvist
GNU General Public License v3.0
148 stars 55 forks source link

Problem z wtyczka canal plus vod #886

Open Piotreklabaj opened 1 year ago

Piotreklabaj commented 1 year ago

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 commented 1 year ago

Potwierdzam, u mnie ten sam problem.

Cinek77 commented 1 year ago

Chyba @hevet poprawiał błąd logowania https://github.com/mbebe/blomqvist/issues/852#issuecomment-1336124593

Piotreklabaj commented 1 year ago

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

praspp commented 1 year ago

Chyba @hevet poprawiał błąd logowania https://github.com/mbebe/blomqvist/issues/852#issuecomment-1336124593

@hevet poprawił logowanie w v1.7.5.8. https://github.com/mbebe/blomqvist/issues/852#issuecomment-1322014255 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. https://github.com/mbebe/blomqvist/issues/850#issuecomment-1336467405

Cinek77 commented 1 year ago

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

mbebe commented 1 year ago

Wersja https://github.com/mbebe/blomqvist/issues/852#issuecomment-1322014255 jest identyczna z wersja 1.7.5.9 w repo, wiec logowanie jest tez takie samo.

praspp commented 1 year ago

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 https://github.com/mbebe/blomqvist/issues/850#issuecomment-1336467405

sydney1981 commented 1 year ago

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 commented 1 year ago

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

sydney1981 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

hevet commented 1 year ago

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

Piotreklabaj commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

Mariusz89B commented 1 year ago

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

mtr81 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

mtr81 commented 1 year ago

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

praspp commented 1 year ago

Delete

Piotreklabaj commented 1 year ago

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

marcin-szczepanski commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

@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 commented 1 year ago

@SBPrime jak generujesz wartość sensor_data?

SBPrime commented 1 year ago

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 :(

mtr81 commented 1 year ago

Pytałem, bo myślałem, że udało ci się przełożyć ten skrypt na PY3...

Mariusz89B commented 1 year ago

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 :(

Mi sie nie udalo nic wydostac po przez js2py. Chyba ze cos przeoczylem.

mtr81 commented 1 year ago

ale ciekawe jest to przejście procedury przy zblokowaniu akamai script... Ale swoją drogą @SBPrime spróbuj powtórzyć ten test przy wyczyszczonych ciasteczkach dla witryny canalplus.com...

SBPrime commented 1 year ago

Miałem wyczyszczone ciasteczka, i włączony tryb incognito.

Mariusz89B commented 1 year ago

@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.

Mozliwe ze sensor data nie idzie ze skryptu akamai. Ciekawe.

mtr81 commented 1 year ago

No nie idzie. W śladzie stosu przy POST vac script są tylko odniesienia do przedmiotowego skryptu vac

SBPrime commented 1 year ago

Udało się odpalić kod vac przez js2py, ale nie jest różowo. Po pierwsze trzeba zrobić patha na operator coma, python płakał, że za ma za dużo otwartych nawiasów, ale to dało się obejść.

Większy problem jest że jak odpalam kod po przekonwertowaniu liczby się psują w js2py. Js2py ma coś takiego jak Js Number który jest używany żeby przechowywać liczby. Liczby od -1024 do 1024 są trzymane w mapie (pewnie optymalizacja). Niestety z jakiegoś powodu podczas wykonywanie kodu js number odpowiadający liczbie 2 zmienia swoją wartość na ujemną (powinno być immutable). Ma ktoś pomysł jak wyśledzić w którym miejscu występuje nadpisanie wartości, a może podejście z js2py to ślepa uliczka?

Mariusz89B commented 1 year ago

Udało się odpalić kod vac przez js2py, ale nie jest różowo. Po pierwsze trzeba zrobić patha na operator coma, python płakał, że za ma za dużo otwartych nawiasów, ale to dało się obejść.

Większy problem jest że jak odpalam kod po przekonwertowaniu liczby się psują w js2py. Js2py ma coś takiego jak Js Number który jest używany żeby przechowywać liczby. Liczby od -1024 do 1024 są trzymane w mapie (pewnie optymalizacja). Niestety z jakiegoś powodu podczas wykonywanie kodu js number odpowiadający liczbie 2 zmienia swoją wartość na ujemną (powinno być immutable). Ma ktoś pomysł jak wyśledzić w którym miejscu występuje nadpisanie wartości, a może podejście z js2py to ślepa uliczka?

Mi sie jedynie udalo przetlumaczyc skrypt ktory leci przez akamai_response z https://github.com/mbebe/blomqvist/issues/886#issuecomment-1369607526, wydaje mi sie ze to ten skrypt daje fingerprint dla sensor data. Jednak moja wiedza o JS nie jest zbyt duza. :/


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

js = js2py.translate_js(akamai_response.text)
SBPrime commented 1 year ago

Nie wydaje mi się, żeby akamai było odpowiedzialne za cokolwiek innego jak tylko tracking (3 różne antytrackery/adblockery identyfikują akamai jako tracke). Ponadto jeśli przeglądarka ma wyłączone skrypty to robi fallback do tracking 1x1px image, no ale mogę się mylić :D

Co do js2py, jest tam coś takiego:

# base.py

NUM_BANK = {}
...

def Js(val, Clamped=False):
...
    elif isinstance(val, float) or isinstance(val, int) or isinstance(
            val, long) or (NUMPY_AVAILABLE and isinstance(
                val,
                (numpy.int8, numpy.uint8, numpy.int16, numpy.uint16,
                 numpy.int32, numpy.uint32, numpy.float32, numpy.float64))):
        # This is supposed to speed things up. may not be the case
        if val in NUM_BANK:
            return NUM_BANK[val]
        return PyJsNumber(float(val), NumberPrototype)
...

Po przeskoczeniu kilku funkcji NUM_BANK[2] zamiast mieć wartość PyJsNumber(2.0) zmienia się na PyJsNumber(-21.0). Nie jestem ekspertem od pythona, jak ktoś ma pomysł jak to zdiagnozować to będę wdzięczny za sugestie. Wydaje mi się, że jest duża szansa, że py2js będzie w stanie nam dać sensor data.

EDIT: Udało się kod odpalić (po drobnych patchah w js2py) i mam crash... js2py.internals.simplex.JsException: TypeError: Undefined and null don't have properties (tried setting property '\x03\x15!\t\x1f \x00]7"\x1f')

Odpaliłem oryginalnego JS'a pod nodem, i ten sam błąd (więc przynajmniej zachowanie między pythonem i javascriptem jest takie samo).

TypeError: Cannot set properties of undefined (setting '3)Nxy~-*')
    at xU (plugin.video.canalplusvod/tmp.js:12:22)
    at hU (plugin.video.canalplusvod/tmp.js:1:15166)
    at Cx (plugin.video.canalplusvod/tmp.js:1:46505)
    at NCmMxnsIys (plugin.video.canalplusvod/tmp.js:25:2900)
    at Object.<anonymous> (plugin.video.canalplusvod/tmp.js:25:3287)
    at Module._compile (node:internal/modules/cjs/loader:1218:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
    at Module.load (node:internal/modules/cjs/loader:1081:32)
    at Module._load (node:internal/modules/cjs/loader:922:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:82:12)
SBPrime commented 1 year ago

Nareszcie mam jakiś postęp, okazuje się, że kod vac jest zabezpieczony. Przy starcie wyliczany jest magic number który jest używany do dekodowania stringów (dlatego uwalało mi się w moich poprzednich testach). Magic number jest liczony w oparciu o jakąś funkcję hashującą kod źródłowy.

Przekonwertowałem kod przy użyciu py2js i po odpaleniu dostałem: js2py.internals.simplex.JsException: TypeError: 'undefined' is not a function (tried calling property 'setTimeout' of 'global')

Wydaje się, że teraz tylko trzeba będzie zmockować funkcje globala.

SBPrime commented 1 year ago

Doszedłem do etapu w którym mam dane do POST'a, niestety sensor_data ma wartość '0'. Na tym etapie skończyły mi się pomysły.

SBPrime commented 1 year ago

@Mariusz89B @mtr81 wrzucam kod który ściąga i uruchamia vac:

from js2py import *
from js2py.pyjs import *
import requests
import re

def patch_vac(vac):
    vac_no_crc = re.sub(r'(function\s+z62\([^{]+{)([^}]+return[^}]+)(})',
                        r'\1return 375;\3',
                        vac)

    vac_function_S62_pattern = r'(function\s+S62\([^{]+{[^}]+})'
    vac_function_S62_regex = re.compile(vac_function_S62_pattern)
    r = vac_function_S62_regex.search(vac_no_crc)
    vac_function_S62 = r.group(1) if r else ''
    vac_function_S62_fixed = vac_function_S62.replace(",", ";")

    vac_no_crc_fixed_S62 = re.sub(vac_function_S62_pattern,
                                  vac_function_S62_fixed,
                                  vac_no_crc)
    return vac_no_crc_fixed_S62

def extend_js2py(vac_src_url):
    def printDebug(methodName, args):
        print("[EXTRA] " + str(methodName) + "(" + ", ".join(repr(element) for element in args) + ")")

    @Js
    def setTimeout():
        printDebug("setTimeout", arguments.to_list())
        return -1

    @Js
    def setInterval():
        printDebug("setInterval", arguments.to_list())
        return -1

    @Js
    def XMLHttpRequest():
        @Js
        def withCredentials():
            printDebug("XMLHttpRequest.withCredentials", arguments.to_list())

        def open():
            printDebug("XMLHttpRequest.open", arguments.to_list())

        def send():
            printDebug("XMLHttpRequest.send", arguments.to_list())

        result = {
            'withCredentials': withCredentials,
            'open': open,
            'send': send
        }

        return result

    @Js
    def document():
        pass

    @Js
    def document_getElementsByTagName(tagname):
        print("[EXTRA] document.getElementsByTagName(" + str(tagname) + ")")
        if str(tagname).lower() == "'script'":
            return [{'src': vac_src_url}]
        return []

    document.put('location', Js({ 'protocol': Js('https:') }))
    document.put('getElementsByTagName', document_getElementsByTagName)

    extraFunctions = {
        'setTimeout': setTimeout,
        'setInterval': setInterval,
        'document': document,
        'XMLHttpRequest': XMLHttpRequest
    }

    JS_BUILTINS.update(extraFunctions)

sess = requests.Session()

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'pl,en-US;q=0.7,en;q=0.3',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
}

root_url = "https://logowanie.pl.canalplus.com"

print("Get login page...")
login_response = sess.get(root_url + "/login", headers=headers, verify=False)
login_html = login_response.text
cookies = login_response.cookies.get_dict()

vac_regex = re.compile(r'<script[^>]+src="(/\w+/\w+/\w+/\w+/\w+)"')
r = vac_regex.search(login_html)
vac_src_url = r.group(1) if r else ''
print("vac src='" + vac_src_url + "'")

print("Get vac...")
vac_src_response = sess.get(root_url + vac_src_url, headers=headers, cookies=cookies, verify=False)
vac_src = vac_src_response.text
cookies = vac_src_response.cookies.get_dict()

print("Patch vac...")
vac_src_patched = patch_vac(vac_src)

print("Extend js2py...")
extend_js2py(vac_src_url)

print("Run vac...")
vac_result = eval_js(vac_src_patched)
print("Vac result='" + str(vac_result) + "'")
print("Done.")

Przykładowy wynik:

Get login page...
vac src='/r6wai00ywUkFzVIStukv/iXOhXbN4u3/QlM4AQE/Cjp/yBSN4WFE'
Get vac...
Patch vac...
Extend js2py...
Run vac...
[EXTRA] setTimeout('function () { [python code] }', '300000')
[EXTRA] document.getElementsByTagName('script')
[EXTRA] setInterval('function () { [python code] }', '3000')
[EXTRA] XMLHttpRequest.open('POST', 'https://undefined/r6wai00ywUkFzVIStukv/iXOhXbN4u3/QlM4AQE/Cjp/yBSN4WFE', 'true')
[EXTRA] XMLHttpRequest.send('{"sensor_data":"0"}')
[EXTRA] setTimeout('function () { [python code] }', '500')
[EXTRA] setTimeout('function () { [python code] }', '1000')
[EXTRA] setInterval('function () { [python code] }', '200')
Vac result='None'
Done.
Mariusz89B commented 1 year ago

@SBPrime Super, wieczorem spróbuję pokombinować.

SBPrime commented 1 year ago

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

Mariusz89B commented 1 year ago

@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 commented 1 year ago

@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 commented 1 year ago

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

Marsiak commented 1 year ago

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 commented 1 year ago

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 commented 1 year ago

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

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

robertczw commented 1 year ago

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