当前位置: 首页 > news >正文

将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
}
]

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

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

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

代码(易语言)

在这里插入图片描述

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

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

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

这里使用的是[\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, ))
    .否则
        ' 输出调试文本 (“匹配文本 ” + 到文本 (局_计次) + “ :” + 局_正则.取匹配文本 (局_计次, ))
    .如果结束

.计次循环尾 ()
返回 (局_匹配数)

相关文章:

  • SpringAOP总结
  • python--数据容器--列表
  • Roson的Qt之旅 #119 QNetworkAddressEntry详细介绍
  • Mybatis -- 使用
  • C语言双链表,循环链表,静态链表讲解(王道版)
  • 比较zab、paxos和raft的算法的异同
  • Python Argparse 库讲解特别好的
  • C++~从编译链接的过程看为什么C++支持重载?externC有什么用?
  • App移动端测试【10】Monkey自定义脚本案例
  • springboot 整合dubbo3开发rest应用
  • 【机器学习】集成学习:使用scikitLearn中的BaggingClassifier实现bagging和pasting策略
  • 算法与数据结构 --- 串,数组和广义表 --- 串
  • 【Python Web】Flask框架(四)Bootstrap的使用及案例
  • MySQL------数据表的创建和简单、条件,模糊查询
  • 【arduino】I/O端口操作
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • crontab执行失败的多种原因
  • CSS实用技巧
  • iOS编译提示和导航提示
  • Kibana配置logstash,报表一体化
  • Mysql优化
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • TypeScript实现数据结构(一)栈,队列,链表
  • vue脚手架vue-cli
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 大主子表关联的性能优化方法
  • 机器学习 vs. 深度学习
  • 警报:线上事故之CountDownLatch的威力
  • 聊聊redis的数据结构的应用
  • 微信小程序开发问题汇总
  • 鱼骨图 - 如何绘制?
  • const的用法,特别是用在函数前面与后面的区别
  • Java数据解析之JSON
  • kubernetes资源对象--ingress
  • #android不同版本废弃api,新api。
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (04)odoo视图操作
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (Note)C++中的继承方式
  • (独孤九剑)--文件系统
  • (二)hibernate配置管理
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (转)http协议
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .net操作Excel出错解决
  • .NET命名规范和开发约定
  • .Net小白的大学四年,内含面经
  • 。Net下Windows服务程序开发疑惑
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • ::什么意思
  • :O)修改linux硬件时间