AnimeWorld-API icon indicating copy to clipboard operation
AnimeWorld-API copied to clipboard

fix(cookie): get cookie and csrf-token

Open Simoneu01 opened this issue 3 years ago • 6 comments

close: https://github.com/MainKronos/Sonarr-AnimeDownloader/issues/21

Con questa PR aggiungo il pacchetto requests-html che permette di renderizzare il js della pagina.

dopo aver renderizzato la pagina avvio uno script, che mi restituisce i dati richiesti.

Praticamente per renderizzare viene installato un browser headless → https://github.com/puppeteer/puppeteer

Ah ultima cosa non sono riuscito a testare in locale tutto, ma solo il fatto che prenda i cookie, quindi sarebbe meglio fare un test aggiuntivo.

Simoneu01 avatar Jul 19 '22 16:07 Simoneu01

@Simoneu01 complimenti per essere riuscito a ottenere SecurityAW e csfrToken.

Sto facendo un po' di test e comunque da errore, come se il codice SecurityAW non fosse valido e non capisco come sia possibile. Chissà quanto tempo ci hanno impiegato quelli di AnimeWorld ad erigere questo groviglio di codice 😂.

Comunque, sto creando un unittest per debuggare più facilmente

MainKronos avatar Jul 19 '22 16:07 MainKronos

ty, ora cerchiamo di far workare tutto, daje

A me in locale da questo errore, non so se è lo stesso tuo. Fammi sapere e ci lavoriamo:

  File "/home/simo/code/AnimeWorld-API/test.py", line 5, in <module>
    res = aw.find("No game no life")
  File "/home/simo/code/AnimeWorld-API/animeworld/utility.py", line 73, in wrapper
    raise e
  File "/home/simo/code/AnimeWorld-API/animeworld/utility.py", line 68, in wrapper
    return fun(*args, **kwargs)
  File "/home/simo/code/AnimeWorld-API/animeworld/utility.py", line 128, in find
    data = res.json()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
    return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Process finished with exit code 1

Simoneu01 avatar Jul 19 '22 17:07 Simoneu01

Ho aggiunto un unittest, da ampliare successivamente... Se provi ad avviare il file test.py il subtest getName fallisce perchè la pagina web (questa) non è quella che dovrebbe essere, cioè è uguale a quella iniziale utilizzata per ottenere il SecurityAW...

Questo mi fà pensare che forse il SecurityAW non sia valido....

Inoltre ho aumentato il timeout (qui) perchè non riusciva a caricare in tempo e mi sollevava un eccezione

MainKronos avatar Jul 19 '22 18:07 MainKronos

Mi correggo, per magia adesso funziona ma adesso vengono sollevate un sacco di eccezioni di Timeout non so... Accade anche a te?

MainKronos avatar Jul 19 '22 18:07 MainKronos

Avevano messo il check con cloudflare sul sito, adesso lo hanno tolto. Se lo raggiungono l'unico modo è utilizzare flaresolverr

Simoneu01 avatar Jul 19 '22 19:07 Simoneu01

Se sei d'accordo lascerei questa richiesta di pull aperta nel caso (secondo me probabile) si ripresentasse lo stesso problema. Per ora preferisco non fare un merge perché l'utilizzo di requests-html renderebbe più lenta la libreria

MainKronos avatar Jul 27 '22 08:07 MainKronos