Open kunraf opened 3 years ago
Problem z playerem jest znany(https://github.com/mbebe/blomqvist/issues/628). Wkrótce @rysson powinien to ogarnąć. Tymczasowo możesz sobie zainstalować starszą wersję: https://github.com/mbebe/blomqvist/blob/master/zips/plugin.video.playermb/plugin.video.playermb-1.9.zip
a pozostałe wtyczki - hejo, internetowa, cda, youtube, polsatgo? to ten sam problem?, jeszcze tydzień temu wszystkie chodziły
To jest jakiś generalny problem z obsługą SSL (raczej certyfikatów niż samego protokołu). PlayreMB 1.9 miał wprost zapisane, żeby ignorował SSL, co nie jest najbardziej bezpiecznym rozwiązaniem. Developerska wersja 1.9.904 ma opcję, w której można SSL wyłączyć i wtedy działa tak jak 1.9. Co nie rozwiązuje problemu, dlaczego w ogóle jest błąd SSL.
No to jest przypudrowanie problemu. Mam silną awersję do ignorowania błędów bezpieczeństwa, szczególnie jak jakieś dane wrażliwe idą (dane do logowania). Niby tylko przejąc można bez trudu konto do playera, ale sama idea jest bardzo zła.
Pewnym kompromisem mogłoby być wykrycie błędu i rzucenie komunikatu, weź sobie oglądaczu i przestaw.
No to jest przypudrowanie problemu. Mam silną awersję do ignorowania błędów bezpieczeństwa, szczególnie jak jakieś dane wrażliwe idą (dane do logowania). Niby tylko przejąc można bez trudu konto do playera, ale sama idea jest bardzo zła.
no ale akurat logowanie przechodziło w wersji 1.9.5, błąd pojawiał się dopiero na trzecim poziomie wyboru kategorii. Czy to oznacza że tylko niektóre zapytania mają włączone sprawdzanie SSL?
@plonkaadam ogólnie jest problem z certyfikatami w waszych systemach (https://kodi.wiki/view/SSL_certificates). Czy twój system na tej malinie jest aktualny? Czy w ogóle próbowałeś aktualizować? Możesz spróbować wymusić aktualizację certyfikatów komendą: sudo update-ca-certificates Dodatkowo komendą: sudo pip3 list możesz sprawdzić czy masz zainstalowane paczki "certifi" oraz "cryptography" i w jakich wersjach. No i jeszcze jedna opcja to sprawdzenie paczki "certifi" w Kodi. Ustawienia > Ustawienia systemu > Dodatki > Zarządzaj zależnościami > certifi Sprawdź czy jest to aktywne i w najnowszej wersji, ew. możesz spróbować to przeinstalować.
No rozumiem. System aktualny, update puszczam co parę tygodni, sprawdzę resztę później jak znajdę czas. Ale nie takie było pytanie - pytam jak to możliwe że część requestów (na przykład logowanie) przechodzi. Czy to oznacza że sprawdzanie SSL jest wyłączone do logowania a włączone do innych operacji?
gdzie znajde repo od mbebe zip sprzed ostatniej aktualiazacji? sam player nic mi nie daje
@kunraf ty musisz logi dać bo: YouTube - nie jest wtyczką od mbebe i nie ma tego w repo mbebe, poza tym wtyczka działa Internetowa - ostatnia aktualizacja była 7 miesięcy temu! - wtyczka odpala Hejo - ostatnia aktualizacja była 20 dni temu - wtyczka odpalda
@plonkaadam, pytanie jest jak najbardziej zasadne. Brak odpowiedzi, przynajmniej z mojej strony, jest spowodowany wyłącznie brakiem czasu, do jutra jestem całkowicie wyjęty. A potem pewnie będę odsypiał.
Jeśli tak się zachowuję to tylko mogę zgadywać, że przez requests
idą inaczej żądania niż bezpośrednio przez urllib3
. Sprawa jest do obadania.
Niezależnie od tego wtyczka 1.9 korzystała tylko z requests
i miała całkowicie wyłączoną weryfikację certyfikatów SSL.
Jeśli requests
sobie radzi obecnie z certyfikatami to i my sobie poradzimy, w końcu ona też korzysta wewnętrznie z urllib3
. W skrajnym przypadku można zawsze używać requests
tylko ona jest dobre kilkanaście procent wolniejsza, ile dokładnie to nie napiszę, pobieranie rzeczywistych danych testowałem na początku roku.
@plonkaadam, dzisiaj odsypiam. Ale w między czasie możesz na tej maszynie uruchomić testowy skrypt?
import requests
import urllib3
url='https://player.pl/playerplus'
with requests.Session() as sess:
with sess.get(url) as resp:
print(len(resp.text))
http = urllib3.PoolManager()
resp = http.request('GET', url)
text = resp.data.decode('utf-8')
print(len(text))
Aby uruchomić skrypt (powiedzmy, że go masz w /tmp/c.py
) razem z modułami kodi, to możesz wpisać w konsoli:
PYTHONPATH=$(ls -d $HOME/.kodi/addons/script.module.*/lib | tr '\n' ':') python /tmp/c.py
Może sprawniej było na Discordzie się skomunikować jeśli idzie o dyskusję o poprawkach poprawek?
Dobranoc :-)
EDIT: u mnie na π4 (libreelec) chodzi bez problemu (wtyczka też).
Wynik taki jakiego można było się spodziewać
23804
Traceback (most recent call last):
File "./skrypt.py", line 11, in <module>
resp = http.request('GET', url)
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/request.py", line 76, in request
method, url, fields=fields, headers=headers, **urlopen_kw
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/request.py", line 97, in request_encode_url
return self.urlopen(method, url, **extra_kw)
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/poolmanager.py", line 330, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/connectionpool.py", line 762, in urlopen
**response_kw
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/connectionpool.py", line 762, in urlopen
**response_kw
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/connectionpool.py", line 762, in urlopen
**response_kw
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/connectionpool.py", line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/home/pi/.kodi/addons/script.module.urllib3/lib/urllib3/util/retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='player.pl', port=443): Max retries exceeded with url: /playerplus (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))
sudo update-ca-certificates
nic nie zrobiło (0 updated)
certifi i cryptography są na liście, zaktualizowałem ich wersję ale to też nic to nie zmieniło.
Zaktualizowałem teraz cały system i wszystkie pakiety, nadal to samo. Puściłem
sudo update-ca-certificates --fresh
, na liście jest debian:GlobalSign_Root_CA_-_R3.pem
używany przez player, nie wiem czemu nie działa.
A może by tak dodać ten certyfikat do wtyczki:
import requests.sessions
requests_session = requests.sessions.Session()
requests_session.verify = ".../cacerts.pem"
A może by tak dodać ten certyfikat do wtyczki
Owszem, ale nie w ten sposób, bo akurat requests
sobie radzi (pierwsza liczba w logach). To urllib3
nie widzi certyfikatu (zgaduję, że CA) i bardzo mnie to dziwi.
Czyli generalnie na maszynie są certyfikaty obsługiwane.
A taki test? Przydałby mi się na chwilę tunel do Twojego sprzętu.
import urllib3
from certifi import where
print(where())
url='https://player.pl/playerplus'
http = urllib3.PoolManager(ca_certs=where())
resp = http.request('GET', url)
text = resp.data.decode('utf-8')
print(len(text))
to zwraca
/home/pi/.kodi/addons/script.module.certifi/lib/certifi/cacert.pem
23804
@plonkaadam, no to jesteśmy w domu. Co prawda nie wiadomo, czy gdzie indziej się nie popsuje :-P
Niby zawsze mogę zrezygnować z urllib3
ale ona samotnie jest wyraźnie szybsza niż z narzutem requests
. Myślę, że dorobię opcję, żeby się dało użyć wolniejszej ale stabilniejszej metody na wszelki wypadek. Wolałbym jednak nie rezygnować z urllib3
bo akurat tej wtyczce na prędkości nie zbywa.
Oprócz naprawy certyfikatów nigdy nie wiadomo, czy się u kogoś nie popsują, więc nie zrezygnowałem z pomysłu pytania co zrobić przy błędach SSL.
Przykład działania (yyy
to sztuczne odwołanie do https://wrong.host.badssl.com, na końcu się wywala bo tam nie ma JSON-a).
https://user-images.githubusercontent.com/5898312/136266747-da6690b3-cb28-41f3-9ac4-dea5382ee96b.mp4
@rysson : Mam pytanie - czy gdzieś po drodze został poprawiony błąd wyświetlania "brak w pakiecie"? Bardzo często po odtworzeniu jednego odcinka, albo po wejściu do kategorii pojawia się przy wszystkich pozycjach właśnie taki komunikat - nic wtedy nie działa, trzeba wyjść poziom wyżej i wejść z powrotem co zazwyczaj naprawia problem. Przeglądam changelogi i plany i nie mogę się doszukać wzmianki
@plonkaadam, wiesz, ciężko mi powiedzieć, bo nie widziałem nigdy tego zachowania. Jak to było na 1.9 vs 1.9.5? I czy teraz jest?
@plonkaadam ja na ponad 4 miesiące użytkowania wersji 1.9.5 nie natknąłem się na taki objaw. Jeśli coś takiego było to zostało wyeliminowane :) (no chyba, że to będzie coś po stronie systemu :P)
Wystawiłem pull-request z ostatnimi poprawkami: mbebe/blomqvist_srcs#2 Poprosiłem @mbebe o przejrzenie, akceptację i wydanie. Wersję oznaczyłem jako 1.10.
@kunraf, zerknij czy dla playera jest lepiej. Resztę masz w tym repo, w tym własnie piszemy: https://github.com/mbebe/blomqvist/tree/master/zips Zawsze możesz zablokować aktualizację i wyjąc sobie zip-y w tej wersji, która Ci pasuje i zainstalować ręcznie. Chyba zawsze jest parę wersji wstecz. @mbebe usuwa najstarsze, żeby nie było za dużego śmietnika. Ale i one są, bo w końcu repozytorium git.
Jeśli nie masz dla nas logów z tym co się wywala, to więcej nie możemy pomóc. W takim razie prosiłbym o zamknięcie zgłoszenia, bo wtyczka z filmu jest poprawiona, miejsce starszych wtyczek wskazane.
Od kilku dni problemy z wtyczkami video z repo mbebe. Netflix, tvp działają, na wtyczkach mbebe jest błąd, dziennik zdarzeń nic nie rejestruje
https://user-images.githubusercontent.com/49157039/135719997-06a98dcc-1744-4740-8f9e-b274250282ec.mp4