keiyoushi / extensions-source

Source code of extensions for Tachiyomi/Mihon and variants.
https://keiyoushi.github.io/
Apache License 2.0
2.17k stars 483 forks source link

Bilibili not working #5827

Open kyoko-tk opened 1 week ago

kyoko-tk commented 1 week ago

Source information

Extension name: BILIBILI MANGA; Extension version: 1.4.11

Source language

zh-Hans

Steps to reproduce

Open or download any chapter

Expected behavior

Chapter opened/downloaded

Actual behavior

When downloading/reading a chapter I get the following error: Expected URL scheme 'http' or 'https' but no scheme was found for ?token....

Mihon/Tachiyomi version

0.17.0

Android version

Android 14

Other details

Expected URL scheme 'http' or 'https' but no scheme was found for ?token...

Acknowledgements

ABPolaris commented 1 week ago

The protocol may be changed from http/https to bilicomic.

Uploading Screenshot_2024-11-02-17-52-12-366_eu.kanade.tachiyomi.j2k.jpg…

Nathaniel-Wu commented 1 week ago

Same issue

Vivi26499 commented 1 week ago

Same issue

LMDM387 commented 1 week ago

Same issue in TachiyomiSY 1.11.0, Extension version: 1.4.11 Dervice:Xiaomipad 5 pro12.4(dagu), HyperOS 1.0.5.0, Android 14 try to update Android System WebView(https://play.google.com/store/apps/details?id=com.google.android.webview&pli=1)(Ver:130.0.6723.58)or use vpn, can`t work But If click on webview(this button), It can read comics correctly QQ图片20241104012355

ZerOri commented 6 days ago

Same issue……

MikeZeDev commented 6 days ago

FYI they also recently added image encryption. So dev might want to check that after fixing that protocol problem.

AlphaBoom commented 3 days ago

Give some infomation about encrypt algorithm:

import base64
import json
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

CONFIG = """{"1":{"al":"AES-CBC","ak":[1,33],"an":[60,76],"at":[0,20]},"2":{"al":"AES-CBC","ak":[1,33],"an":[60,76],"at":[0,20]}}"""

def select_config(version:int):
    return json.loads(CONFIG)[f"{version}"]

def decrypt(b, A, x, E, S):
    i = b[S[0]:S[1]*1024+16]
    s = b[S[1]*1024+16:]
    # AES mode should from E
    cipher = AES.new(A,AES.MODE_CBC,x)
    decrypted = unpad(cipher.decrypt(i), AES.block_size)
    return decrypted + s

def decode_file(file:str, cpx):
    """
    """
    with open(file, mode="rb") as f:
        config = select_config(int.from_bytes(f.read(1), "big"))
        an = config["an"]
        al = config["al"]
        at = config["at"]
        x = base64.b64decode(cpx)[an[0]:an[1]]
        size = int.from_bytes(f.read(4), "big")
        b = f.read(size)
        A = f.read()
        decrypted = decrypt(b, A, x, al, at)
    with open("output.jpg", "wb") as f:
        f.write(decrypted)