将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, ))
.否则
' 输出调试文本 (“匹配文本 ” + 到文本 (局_计次) + “ :” + 局_正则.取匹配文本 (局_计次, ))
.如果结束
.计次循环尾 ()
返回 (局_匹配数)