Greasy Fork is available in English.

Discussions » Development

怎么替换掉原来的COOKIE,求个师傅带入门

§
Posted: 10.01.2022

我就是想写一个把现有cookie替换原来的,然后刷新页面,就可以了
老板要这个功能,我不会写浏览器脚本,只会写手机脚本,求个师傅带下入门,感谢

§
Posted: 11.01.2022

修改cookie的话使用document.cookie = <string>就行了,修改前记得备份一下现有的cookie。
不过对于某些带有httponly标志的cookie,这样就行不通了,需要使用Tampermonkey Beta(红色)提供的GM_cookie,这是相关资料

declare namespace GM {
    interface cookieDetails {
        /**
         * 域
         */
        domain: string,
        /**
         * 截止日期时间戳(10位)
         */
        expirationDate: number;
        /**
         * 客户端专用,不会发送给服务端
         */
        hostOnly: boolean;
        /**
         * 服务端专用,客户端js无法获取/修改
         */
        httpOnly: boolean;
        /**
         * 名称
         */
        name: string;
        /**
         * 子页面路径
         */
        path: string;
        /**
         * 同源策略
         */
        sameSite: string;
        /**
         * 是否允许通过非安全链接发送给服务器
         */
        secure: boolean;
        /**
         * 会话型cookie,临时有效,随页面一起销毁
         */
        session: boolean;
        /**
         * 值
         */
        value: string
    }
    const cookie: {
        /**
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         */
        <T extends keyof typeof cookie>(method: T, ...args: Parameters<(typeof cookie)[T]>): ReturnType<(typeof cookie)[T]>;
        /**
         * 以数组形式返回所有cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param details 筛选条件,无条件请使用空对象{}会返回所有cookie
         * @returns 符合条件的cookie对象数组
         */
        list(details: Partial<Record<"domain" | "name" | "path", string>>): Promise<cookieDetails[]>;
        /**
         * 修改/添加cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param args cookie详细信息
         */
        set(details: Partial<cookieDetails>): Promise<void>;
        /**
         * 删除cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param args 删除条件
         */
        delete(details: Record<"name", string>): Promise<void>;
    }
}

ps:话说什么样的老板会要求使用油猴脚本实现业务啊,我很好奇?!

§
Posted: 11.01.2022

修改cookie的话使用document.cookie = <string>就行了,修改前记得备份一下现有的cookie。

不过对于某些带有httponly标志的cookie,这样就行不通了,需要使用Tampermonkey Beta(红色)提供的GM_cookie,这是相关资料

declare namespace GM {
    interface cookieDetails {
        /**
         * 域
         */
        domain: string,
        /**
         * 截止日期时间戳(10位)
         */
        expirationDate: number;
        /**
         * 客户端专用,不会发送给服务端
         */
        hostOnly: boolean;
        /**
         * 服务端专用,客户端js无法获取/修改
         */
        httpOnly: boolean;
        /**
         * 名称
         */
        name: string;
        /**
         * 子页面路径
         */
        path: string;
        /**
         * 同源策略
         */
        sameSite: string;
        /**
         * 是否允许通过非安全链接发送给服务器
         */
        secure: boolean;
        /**
         * 会话型cookie,临时有效,随页面一起销毁
         */
        session: boolean;
        /**
         * 值
         */
        value: string
    }
    const cookie: {
        /**
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         */
        <T extends keyof typeof cookie>(method: T, ...args: Parameters<(typeof cookie)[T]>): ReturnType<(typeof cookie)[T]>;
        /**
         * 以数组形式返回所有cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param details 筛选条件,无条件请使用空对象{}会返回所有cookie
         * @returns 符合条件的cookie对象数组
         */
        list(details: Partial<Record<"domain" | "name" | "path", string>>): Promise<cookieDetails[]>;
        /**
         * 修改/添加cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param args cookie详细信息
         */
        set(details: Partial<cookieDetails>): Promise<void>;
        /**
         * 删除cookie  
         * **警告:此实验性特性仅在Tampermonkey Beta中可用,否则将抛出语法错误!**
         * @param args 删除条件
         */
        delete(details: Record<"name", string>): Promise<void>;
    }
}

ps:话说什么样的老板会要求使用油猴脚本实现业务啊,我很好奇?!



感谢感谢!!!我试一下!!!
有没有Q加呀,偶尔请教一下!!

Post reply

Sign in to post a reply.