filecxx / FileCentipede

Cross-platform internet upload/download manager for HTTP(S), FTP(S), SSH, magnet-link, BitTorrent, m3u8, ed2k, and online videos. WebDAV client, FTP client, SSH client.
http://filecxx.com
9.35k stars 594 forks source link

Chromium扩展未传递cookie #401

Closed login404 closed 1 year ago

login404 commented 2 years ago

https://gofile.io/d/eIfcCQ 该网站接管下载跟右键添加任务都不会传递cookie

filecxx commented 2 years ago

image 我点击下载能够获取到cookie,你检查下是否包含accountToken=

login404 commented 2 years ago

我知道问题了 是隐身模式下不行

好像也不是隐身模式的问题 有点奇怪 我关了吧…

login404 commented 2 years ago

我又复现了 跟隐身模式无关 出现时托盘图标会显示感叹号 (这是通过浏览器添加任务的正常情况? 平时没注意) 此时任何网页都不会传递cookie 重启filec.exe跟浏览器进程都不行

隐身模式 1

非隐身模式 2

filecxx commented 2 years ago

浏览器扩展的cookie面板内cookie是否也是空的。

login404 commented 2 years ago

浏览器扩展的cookie面板内cookie是否也是空的。

面板内不是空的 第一张图有录到

filecxx commented 2 years ago

我也不太确定是哪里的问题,下载之前使用浏览器API获取的cookies,应该不太可能为空

/*
     * get cookie
    */
    let get_cookie = function(url,callback)
    {
        let cookies_obj = chrome.cookies || chrome.experimental.cookies;

        if(!cookies_obj){
            return callback("");
        }
        cookies_obj.getAll({url: url},function(cookies)
        {
            let str = "";

            for(let i=0;i<cookies.length;i++){
                if(i !== 0){
                    str += ";";
                }
                str += cookies[i].name + "=" + cookies[i].value;
            }
            callback(str);
        });
    }
    /*
     * start download file
    */
    let start_download_file = function(tab_id,url,filename,filesize,referer,page_url)
    {
        get_cookie(url,(cookie)=>
        {
            let extra = {file_size:filesize};

            if(page_url !== url){
                extra.page_url = page_url;
            }
            let uri = create_filec_uri(url,{file_name:filename},referer,navigator.userAgent,cookie,extra,default_http_headers);

            start_download_request(uri,tab_id);
        });
    }

当然可能是当前域名和下载文件的域名不同导致获取为空或者被浏览器禁止跨域,但我这简单的测试确又获取到了,表示不是一定会发生这情况,下次更新时候我尽量检查下。另外其他网站有出现这个情况吗?

login404 commented 2 years ago

我也不太确定是哪里的问题,下载之前使用浏览器API获取的cookies,应该不太可能为空

/*
     * get cookie
    */
    let get_cookie = function(url,callback)
    {
        let cookies_obj = chrome.cookies || chrome.experimental.cookies;

        if(!cookies_obj){
            return callback("");
        }
        cookies_obj.getAll({url: url},function(cookies)
        {
            let str = "";

            for(let i=0;i<cookies.length;i++){
                if(i !== 0){
                    str += ";";
                }
                str += cookies[i].name + "=" + cookies[i].value;
            }
            callback(str);
        });
    }
    /*
     * start download file
    */
    let start_download_file = function(tab_id,url,filename,filesize,referer,page_url)
    {
        get_cookie(url,(cookie)=>
        {
            let extra = {file_size:filesize};

            if(page_url !== url){
                [extra.page](http://extra.page)_url = page_url;
            }
            let uri = create_filec_uri(url,{file_name:filename},referer,navigator.userAgent,cookie,extra,default_http_headers);

            start_download_request(uri,tab_id);
        });
    }

当然可能是当前域名和下载文件的域名不同导致获取为空或者被浏览器禁止跨域,但我这简单的测试确又获取到了,表示不是一定会发生这情况,下次更新时候我尽量检查下。另外其他网站有出现这个情况吗?

跟网站好像没关系 出现时任何网站在创建任务时cookie都为空

第二张图里直接在本页面右键下载1楼的链接 正常时也是会有cookie的

filecxx commented 2 years ago

这个时候重启浏览器还会正常吗?

login404 commented 2 years ago

这个时候重启浏览器还会正常吗?

不会 重启过几次浏览器了 也试过关闭其他扩展 没用 现在都没恢复正常

我知道怎么复现了 1.完全退出浏览器 2.打开浏览器 3.打开隐身窗口 4.在隐身窗口打开https://gofile.io/d/eIfcCQ 5.右键下载添加任务 此时cookie为空 6.在非隐身窗口打开https://gofile.io/d/eIfcCQ 并右键下载添加任务 此时cookie正常 7.回到隐身窗口再次右键下载添加任务 此时cookie正常

filecxx commented 2 years ago

好奇怪的问题,我认为和filec没关系,应该是浏览器插件的BUG。

filecxx commented 1 year ago

1.8版本的浏览器扩展应该修复了。

login404 commented 1 year ago

好像还是不行 必须在非隐身窗口有cookie时 才能在隐身窗口获取到 而且获取到的是非隐身的cookie

https://user-images.githubusercontent.com/69505914/210129193-7eb340ab-dc23-4c4a-92cb-cfc9f05a15b6.mp4

filecxx commented 1 year ago

这不太好解决,chrome的隐身窗口和普通窗口用的同一个background.js ,下载事件触发也是在background.js中,cookie共享的,chrome.tabs.query查询到的窗口是非隐身的窗口,即便我关掉了查到的还是非隐身的窗口,不确定是不是浏览器的BUG,下次更新时候再深入测试下。

login404 commented 1 year ago

https://github.com/alexhua/Aria2-for-chrome 该扩展的下载拦截可以正常获取隐身cookie 虽然它的右键导出也有相同问题 或许能参考下?

filecxx commented 1 year ago

https://github.com/alexhua/Aria2-for-chrome 该扩展的下载拦截可以正常获取隐身cookie 虽然它的右键导出也有相同问题 或许能参考下?

这个问题已经在1.81浏览器chrome 扩展中修复了,但是firefox仍然存在这个问题。