概述
我们使用的部分网站设计成一旦登录即不允许用户手动退出, 现实场景中是没有问题的
但如果是在测试或调试过程中就会有强制登出的需求
如果当前使用的是 PC 浏览器, 您或许可以通过调试模式清除保持登录信息的数据实现手动退出.
但是如果当前使用的手机 web 浏览器, 或者其他 Web 嵌入的方式 (比如微信公众号) 退出是十分困难的
下面以退出微信公众号下的京东到家为例, 说明如何使用 FreeHttp 实现手动退出登录功能(FreeHttp 说明 https://www.cnblogs.com/lulianqi/p/10428551.html )
准备工作
2:FreeHttp 的安装详见()
3: 进入微信登录京东到家(测试中使用 iphone6s 移动设备)
配置
如上图配置
1: 这里需要选择一个 session, 该 session 包含该站点的登录信息的 cookies, 您可以逐个查找, 当然如果您正在对该站进行测试或调试, 您应该很清楚哪条请求包含这些信息
2: 选择完 session 后, 我们使用 Quick Rule 中的 Remove Session Cookies 快速创建规则
当您选择 Remove Session Cookies 后会弹出上图对话框, 询问您是否需要修改 Set-Cookie 的属性信息(如果不需要修改直接关闭即可), 因为有时候当前 URL 的域可能不是浏览器中 Cookie 的 Domian, 这个时候您可能需要添加一个 Domian 来手动指定
3: 填写过滤规则, 因为能不是每次都需要告诉终端让他清除 cookies(事实上只需要一次就可以), 这个 Url 一般都是主页 HTML 等关键请求(提示: 您可以直接拖动 session 到输入框中, 完成 url 的输入)
完成后您会发现『Response Modific』页 Add Head 加入了许多 Set-Cookie(因为无法确认哪个 cookie 包含着登录信息, Remove Session Cookies 会默认清除所有发现的 cookie)
当然大多数情况作为测试或开发人员您是知道页面哪个 cookie 标识的用户状态, 如果是这样您不需要使用 Remove Session Cookies 删除页面下所有 cookie, 而可以直接使用 delete cookie 手动指定需要删除的 cookie 即可
点击确认并设置规则生效
测试
现在您可以在微信里刷新京东到家当前页面
在列表中可以看到规则已经被匹配到, 查看报表信息可以看到修改已经完成(黄色高亮 session 表示给请求是一个被 FreeHttp 修改过的请求)
这个时候再次查看微信公众号里的页面, 您会发现当前已经处于未登录状态.
原理
因为 Http 本身是无状态的, 如果要维护登录状态就需要应用层面实现.
一般应用会将登录状态放在客户端 Cookie 中(这样浏览器会帮助管理维护 cookie), 也有一些服务 API 会将令牌放在自定义 header 或查询字符串等其他参数中(这一般出现在需要跨平台的服务中, 因为不是所有应用环境都是在浏览器中, 有些嵌入式设备根本没有浏览器).
这一点很好区分, 您只需要对比登录状态下的请求与不登录状态下请求的全部即可
我们这里是要清除微信公众号应用的登录状态(大部分都是通过 cookie 来做到的)
最后问题变成如何清除指定 cookie
我们知道浏览器中的 cookie 是一般由请求返回头中的 Set-Cookie 指定的, 浏览器接收到该返回头即会为指定站点创建 Cookie 信息(详细内容可以看这里 )
在有调试模式的浏览器中我们很容易实现, 直接右键删除, 或通过 JS 删除, 不过对于没有调试模式的手机终端前面的方法看起来行不通了.
查看 Set-Cookie 规则, 我们可以发现 Max-Age 属性(过期时间), 那我们只要把过期时间设置的足够短不就可以骗过浏览器, 让它删除我们想要删除的 cookie
注意这里 Set-Cookie 是响应头, 所有必须浏览器先发起一个请求然后我们修改该请求的响应头, 把带有 Max-Age=1 属性的 Set-Cookie 写入就可以了(Set-Cookie: name=delete by FreeHttp; Max-Age=1;Path=/)
改响应的操作就直接通过 Fiddler 上的 FreeHttp 插件实现即可, 操作即上文所述
FreeHttp 详细使用方法见( https://www.cnblogs.com/lulianqi/p/10428551.html )
不过使用 TLS 可以对其安全性进行加强(即 https),
使用 FreeHttp 强制登出微信公众号登陆状态(实现~ 原理)
来源: http://www.bubuko.com/infodetail-2971626.html