• 将cookie字符串转成editthiscookie插件的json格式


    问题与思路

    EditThisCookie是一个cookie管理器。可用于浏览器cookie的删除,编辑,搜索,锁定和屏蔽。

    而我们正常f12 network或者其他抓包方式所查看到的cookie是这样的格式:

    在这里插入图片描述
    现在的需求是将这串cookie通过editthiscookie插件,全部替换原有页面的cookie。

    可以看到插件中有个导入cookie的功能,但是它需要固定的json格式:

    在这里插入图片描述
    点击后是这样:
    在这里插入图片描述

    首先我们通过导入按钮的右侧导出cookie按钮来确定下json格式:

    在这里插入图片描述
    点击后复制的cookie格式是这样:

    [
    {
        "domain": ".4399.com",
        "expirationDate": 2522293209,
        "hostOnly": false,
        "httpOnly": false,
        "name": "_4399stats_vid",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": false,
        "storeId": "0",
        "value": "16583796095503754",
        "id": 1
    },
    {
        "domain": ".4399.com",
        "expirationDate": 1663463941,
        "hostOnly": false,
        "httpOnly": false,
        "name": "channel_cid",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": false,
        "storeId": "0",
        "value": "3000",
        "id": 2
    },
    {
        "domain": ".4399.com",
        "expirationDate": 1663463941,
        "hostOnly": false,
        "httpOnly": false,
        "name": "channel_uid",
        "path": "/",
        "sameSite": "unspecified",
        "secure": false,
        "session": false,
        "storeId": "0",
        "value": "3000",
        "id": 3
    }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    上方json代码中省略了下面其他cookie键值对。

    从上方json代码可以发现key键的含义,如name是cookie的name,value是cookie中的value,而id是递增的。

    由此我们可以写代码来完成这个转换工作,即将cookie字符串转换为插件可用的json格式。

    代码(易语言

    在这里插入图片描述

    如果你想通过其他编程语言来实现,也可以参考上方代码。

    正则匹配的代码是这样的:

    ([\S]*?)=([\S]*?);
    
    • 1

    这里使用的是[\S]*?以防匹配到空格。

    附件

    这里放上易语言代码 文本格式(需要自行引用精易模块)

    .版本 2
    .支持库 spec
    
    .子程序 _按钮1_被单击
    .局部变量 txt, 文本型
    .局部变量 json_最终, 类_json
    .局部变量 json_单个, 类_json
    .局部变量 domain, 文本型
    .局部变量 i, 整数型
    .局部变量 name, 文本型
    .局部变量 value, 文本型
    .局部变量 arr_name, 文本型, , "0"
    .局部变量 arr_value, 文本型, , "0"
    
    domain = “填写你需要的网站域名”
    
    txt = 编辑框1.内容
    
    正则_匹配批量name和value (txt, arr_name, arr_value)
    调试输出 (“arr_name  ”, arr_name)
    调试输出 (“arr_value  ”, arr_value)
    
    
    .计次循环首 (取数组成员数 (arr_name), i)
        name = arr_name [i]
        调试输出 (“name  ”, name)
    
        value = arr_value [i]
        调试输出 (“value  ”, value)
    
        json_单个.清除 ()
    
        json_单个.置属性 (“domain”, domain, )
        json_单个.置属性 (“hostOnly”, “true”, 真)
        json_单个.置属性 (“httpOnly”, “true”, 真)
        json_单个.置属性 (“name”, name, )
        json_单个.置属性 (“path”, “/”, )
        json_单个.置属性 (“sameSite”, “unspecified”, )
    
        json_单个.置属性 (“secure”, “false”, 真)
        json_单个.置属性 (“session”, “true”, 真)
        json_单个.置属性 (“storeId”, “0”, )
        json_单个.置属性 (“value”, value, )
        json_单个.置属性 (“id”, 到文本 (i), 真)
    
        json_最终.加成员 (json_单个.取数据文本 (), , 真, )
    .计次循环尾 ()
    
    
    编辑框2.内容 = json_最终.取数据文本 ()
    
    
    .子程序 正则_匹配批量name和value, 整数型
    .参数 源文本, 文本型, , 欲被匹配的文本
    .参数 arr_name, 文本型, 参考 数组
    .参数 arr_value, 文本型, 参考 数组
    .局部变量 局_正则, 正则表达式类, , , 此类为精易模块里面的正则类,精易模块下载地址:http://ec.125.la/
    .局部变量 局_匹配数, 整数型
    .局部变量 局_计次, 整数型
    .局部变量 局_子匹配数, 整数型
    
    清除数组 (arr_name)
    清除数组 (arr_value)
    
    
    .如果真 (局_正则.创建 (“([\S]*?)=([\S]*?);”, 源文本, 假, 假, 真, 真) = 假)
        调试输出 (“正则创建失败,请检查正则表达式语句是否有误!”, #错误图标, )
        返回 (0)
    .如果真结束
    局_匹配数 = 局_正则.取匹配数量 ()
    .如果真 (局_匹配数 = 0)
        调试输出 (“匹配失败,请检检查正则语句是否有误,数量:0”, #错误图标, )
        返回 (0)
    .如果真结束
    局_子匹配数 = 局_正则.取子匹配数量 ()
    .计次循环首 (局_匹配数, 局_计次)
        .如果 (局_子匹配数 > 0)
    
            加入成员 (arr_name, 局_正则.取子匹配文本 (局_计次, 1, ))
            加入成员 (arr_value, 局_正则.取子匹配文本 (局_计次, 2, ))
    
    
            ' 输出调试文本 (“匹配文本 ” + 到文本 (局_计次) + “ 中的子匹配文本 1:” + 局_正则.取子匹配文本 (局_计次, 1, ))
        .否则
            ' 输出调试文本 (“匹配文本 ” + 到文本 (局_计次) + “ :” + 局_正则.取匹配文本 (局_计次, ))
        .如果结束
    
    .计次循环尾 ()
    返回 (局_匹配数)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
  • 相关阅读:
    生成二维坐标数组numpy.meshgrid()
    K1.Compound interest basics(每天进步一点点)
    如何把网站的http改成https?
    一种新的爬虫网络解锁器
    SpringBoot 刷新上下文6--加载并注册BeanDefinition
    安科瑞能耗监测系统在新集卫生院综合楼、急诊楼的设计与应用
    三十一、W5100S/W5500+RP2040树莓派Pico<TCP_Server多路socket>
    Junit5单元测试Service中的方法
    layui增删改查
    ENVI5.6超详细教程大全-从安装包到安装流程详解
  • 原文地址:https://blog.csdn.net/qq_34626094/article/details/126911023