zaxtyson / LanZouCloud-CMD

🚀 蓝奏云 CMD | 无限制上传

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

自动读取浏览器cookie

rachpt opened this issue · comments

可以加上自动读取 chrome firefox edge opera 浏览器蓝奏cookie的功能。
使用 browser_cookie3 这个模块。
原代码在Macos 打包 app 后不正常工作,我修改后可以正常工作:https://github.com/rachpt/lanzou-gui/blob/master/lanzou/browser_cookie3_n.py

def get_cookie_from_browser(site='https://pc.woozooo.com'):
    """直接读取浏览器的 cookie 数据库,优先返回 Firefox cookie,最后为 Chrome
    """
    cookie = {}
    domain = re.match(r".*://([^/]+)/?", site)
    domain = domain.groups()[0]
    domain = domain.split(".")
    domain = ".".join(domain[-2:])
    cookies = browser_cookie3.load(domain_name=domain)
    for c in cookies:
        if c.domain in site:
            if c.name in ("ylogin", 'phpdisk_info'):
                cookie[c.name] = c.value

    return cookie

https://github.com/rachpt/lanzou-gui/blob/e37d23f1cd7fb7c5c51012c49cefb4ca39f45ddc/lanzou/gui/dialogs/login.py#L378

good idea👍 这就加上

在我电脑上面似乎没用, 有空再折腾下

ok, 加上了~

browser_cookie3 在读取浏览器的用户数据时, 使用的是 ../User Data/Default/... 路径下的配置, 但是现在不少浏览器是一个 User 一个文件夹, 比如 Chromium Edge.

添加了对 ../User Data/Profile N/...../User Data/Guest Profile/ 下配置文件的扫描.

def __add_more_possible_paths(paths: Iterable[str]):

关于 cookie 读取的顺序问题, 我这边改成了: 找到第一个满足 domain_name 和 我们要求的 keys 的浏览器 Cookie, 防止其它浏览器登录过, 但是没有我们想要的数据.

def load_with_keys(domain_name="", keys: list = None) -> (dict, str):

此外, 我在 Ubuntu 20.04.2 LTS 虚拟机什么跑, 会出现
image

似乎是 GNOME Keyring 的问题, 这个地方不用 keyring 好像也没问题.

抛出来的 dbus.exceptions.DBusException eyring.errors.InitError 都继承自 Exception, 原作者在这里捕获 RuntimeError 似乎范围不够

你好,很幸运遇到了这样有想法的软件,但是我在使用过程中遇到了问题,读取edge的cookie一直显示失败,当我调用开发者页面输入相应的数据后还是显示失败是为什么?我的电脑系统是windows10

Edge 最近的新版本开始不允许浏览器运行时复制或访问 Cookies 了,建议仅保留 Firefox.

Mac上读取不了cookie,要怎么操作?谢谢