概述

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

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

如果当前使用的是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移动设备)

配置

如上图配置

  • 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信息(详细内容可以看这里 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

使用FreeHttp强制登出微信公众号登陆状态(实现~原理)的更多相关文章

  1. Java微信公众号开发

    微信公众平台是腾讯为了让用户申请和管理微信公众账号而推出的一个web平台.微信公众账号的种类可以分为3种,并且一旦选定不可更改.按照功能的限制从小到大依次为:订阅号.服务号.企业号.个人只能注册订阅号 ...

  2. python爬取微信公众号

    爬取策略 1.需要安装python selenium模块包,通过selenium中的webdriver驱动浏览器获取Cookie的方法.来达到登录的效果 pip3 install selenium c ...

  3. 微信公众号弹出框在IOS最新系统中点击键盘上的“完成”导致事件无法触发问题

    微信公众号弹出框在IOS最新系统中点击键盘上的"完成"导致事件无法触发问题 问题描述 微信公众号中有项功能是弹框模态框,输入信息后保存操作.但是在IOS系统中发现,当输入内容后,点 ...

  4. ios 最新系统bug与解决——微信公众号中弹出键盘再收起时,原虚拟键盘位点击事件无效

    最近ios发布新版本系统12.1,随着部分用户的系统更新,一些问题也渐渐暴露出来... 公司用户反映微信公众号出现了点击无效的bug!!测试调查发现,只有iphonex.iphone6,ihpone7 ...

  5. PHP微信公众号开发之自动回复

    先把源码类发出来 <?php /** 自己封装 微信 开发api */ header('Content-type: text/html; charset=utf-8');#设置头信息 class ...

  6. “互联网+”背景下使用微信公众号增强班主任工作与整合教学资源(泰微课)

    前记:此文是我爱人一项作业.因为我本人对于微信这一块比较熟悉,就参与这项作业中.此文已经参加移动和教育相关活动.作者是我爱人,如有转载请署名作者. 一.什么是"互联网+"? 早在1 ...

  7. 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a1786223749/article/ ...

  8. 微信公众号接口类(PHP版本)

    [项目需求] 通过微信提供的接口,实现微信公众号与后端的应用程序数据交互.消息响应等功能. [项目疑难点] 理解接口工作方式,统一接口API,响应速度.安全性等   [代码举例]   WeixinAp ...

  9. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

随机推荐

  1. 探究 CSS 混合模式\滤镜导致 CSS 3D 失效问题

    今天在写一个小的 CSS Demo,一个关于 3d 球的旋转动画,关于 CSS 3D,少不了会使用下面这几个属性: { transform-style: preserve-3d; perspectiv ...

  2. SpringMVC 参数传递和接收的几种方式

    普通传参 测试项目:SpringBoot2.0.不使用 form 表单传参,后端不需要指定 consumes . 使用 Postman 进行测试. @PathVariable 只能接收 URL 路径里 ...

  3. 解决MUI阻止a标签默认跳转事件—方法总结

    用过mui的小伙伴们一定不会陌生,有时候真的很烦mui本身会阻止a标签默认跳转.一般只要用了mui的ui组件,比如头部,底部或者弹框,你就不能在用a标签进行跳转了. 注:项目中引用了mui后,可能也会 ...

  4. javascript权威指南笔记[1-5]

    1.javaScript的数据类型分为两类:原始类型和对象类型: 2.javaScript中除了数字,字符串,布尔值,null,undefined之外就是对象了: 3.对象(object)是属性(pr ...

  5. ipv6地址抓包分析

    拓扑图: 因为多路由,所以采用ospf配置将路由实现互通,从而进行抓包 ospf配置以R1为例 查看R4路由表 做完进行ping通测试 R4pingR3 R4pingR5 进行抓包分析 128报文 1 ...

  6. 第一周 IP通信基础学习回顾

    这周的课程首先让我们学习了计算机网络概述,了解计算机网络的定义和功能分别是:资源共享,信息传输与集中处理,负载均衡与分布处理,综合信息服务.同时也对计算机网络的演进,计算机网络的分类,计算机网络的性能 ...

  7. 【机器学习】--LDA初始和应用

    一.前述 LDA是一种 非监督机器学习 技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息.它采用了词袋(bag of words)的方法 ...

  8. IDEA同步上传lua代码,方便开发。

    因项目是Java和lua一起开发的,以前用Notepad++插件连接,每次关掉得重新寻找目录.有点耗时间,所以用idea提供的工具很是便利,再此做个笔记. 点击上面的绿色”+“号,添加 在配置mapp ...

  9. 深入Go的底层,带你走近一群有追求的人

    目录 缘起 自我介绍的技巧 硬核知识点 什么是plan9汇编 汇编角度看函数调用及返回过程 汇编角度看slice 正确参与Go夜读活动的方式 阅读原文 上周六晚上,我参加了"Go夜读&quo ...

  10. ThreadPoolExecutor中的submit()方法详细讲解

    https://blog.csdn.net/qq_33689414/article/details/72955253