Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自动读取浏览器cookie #59

Open
rachpt opened this issue Mar 3, 2021 · 6 comments
Open

自动读取浏览器cookie #59

rachpt opened this issue Mar 3, 2021 · 6 comments
Labels
enhancement New feature or request

Comments

@rachpt
Copy link

rachpt commented Mar 3, 2021

可以加上自动读取 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

@zaxtyson
Copy link
Owner

zaxtyson commented Mar 4, 2021

good idea👍 这就加上

@zaxtyson zaxtyson added the enhancement New feature or request label Mar 4, 2021
@zaxtyson
Copy link
Owner

zaxtyson commented Mar 4, 2021

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

@zaxtyson
Copy link
Owner

zaxtyson commented Mar 6, 2021

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 似乎范围不够

@liuyiwei521
Copy link

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

@ZhangTianrong
Copy link

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

@w00118501
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants