其他分享
首页 > 其他分享> > 使用FreeHttp强制登出微信公众号登陆状态(实现~原理)

使用FreeHttp强制登出微信公众号登陆状态(实现~原理)

作者:互联网

概述

我们使用的部分网站设计成一旦登录即不允许用户手动退出,现实场景中是没有问题的

但如果是在测试或调试过程中就会有强制登出的需求

如果当前使用的是PC浏览器,您或许可以通过调试模式清除保持登录信息的数据实现手动退出。

但是如果当前使用的手机WEB浏览器,或者其他web嵌入的方式(比如微信公众号)退出是十分困难的

下面以退出微信公众号下的京东到家为例,说明如何使用FreeHttp实现手动退出登录功能(FreeHttp 说明 https://www.cnblogs.com/lulianqi/p/10428551.html

准备工作

1:您需要为您的移动设备设置Fiddler代理,并安装证书(手机代理及证书的安装您可以通过百度查询到相关文章)

2:FreeHttp的安装详见(https://www.cnblogs.com/lulianqi/p/10428551.html#a00

3:进入微信登录京东到家(测试中使用iphone6s移动设备)

配置

如上图配置

 

 当您选择Remove Session Cookies后会弹出上图对话框,询问您是否需要修改Set-Cookie的属性信息(如果不需要修改直接关闭即可),因为有时候当前URL的域可能不是浏览器中Cookie的Domian,这个时候您可能需要添加一个Domian来手动指定

 

完成后您会发现『Response Modific』页Add Head加入了许多Set-Cookie(因为无法确认哪个cookie包含着登录信息,Remove Session Cookies会默认清除所有发现的cookie)
当然大多数情况作为测试或开发人员您是知道页面哪个cookie标识的用户状态,如果是这样您不需要使用Remove Session Cookies删除页面下所有cookie,而可以直接使用delete cookie手动指定需要删除的cookie即可
点击确认并设置规则生效

测试

 原理

一般应用会将登录状态放在客户端Cookie中(这样浏览器会帮助管理维护cookie),也有一些服务API会将令牌放在自定义header或查询字符串等其他参数中(这一般出现在需要跨平台的服务中,因为不是所有应用环境都是在浏览器中,有些嵌入式设备根本没有浏览器)。

这一点很好区分,您只需要对比登录状态下的请求与不登录状态下请求的全部即可

我们这里是要清除微信公众号应用的登录状态(大部分都是通过cookie来做到的)

我们知道浏览器中的cookie是一般由请求返回头中的Set-Cookie指定的,浏览器接收到该返回头即会为指定站点创建Cookie信息(详细内容可以看这里 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-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),

标签:Set,浏览器,登录,微信,cookie,登出,Cookie,FreeHttp
来源: https://www.cnblogs.com/lulianqi/p/10446739.html