概述

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

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

如果当前使用的是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. 在离线环境中安装Visual Stuido 2017

    在离线环境中安装Visual Stuido 2017 0x00 写在前面的废话 因为工作上大多数都是在离线环境中进行的,进出离线环境很麻烦,所以之前很长一段时间都在使用VS2010.后来尝试换了VS2 ...

  2. String、StringBuffer和StringBuilder类的区别

    Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...

  3. ES6 模块化笔记

    ES6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量. ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入. // ...

  4. java8 时间使用

    为什么需要新的时间API 文章来源:https://www.cnblogs.com/guozp/p/10342775.html 在Java 8之前的日期/时间API之前,现有的与日期和时间相关的类存在 ...

  5. Identity Server 4 预备知识 -- OAuth 2.0 简介

    OAuth 2.0 简介 OAuth有一些定义: OAuth 2.0是一个委托协议, 它可以让那些控制资源的人允许某个应用以代表他们来访问他们控制的资源, 注意是代表这些人, 而不是假冒或模仿这些人. ...

  6. WebApi生成在线API文档--Swagger

    1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...

  7. 使用 ASP.NET Core MVC 创建 Web API(四)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  8. Linux 软硬链接的区别及目录权限对软硬链接的影响

    目录权限的影响 首先,构建实验环境如下图: 有 A.B 两个目录,A 目录下建有 test 文件,且文件中的内容为 "Hello".B 目录下分别创建 test 文件的硬链接 te ...

  9. [TCP/IP] 数据链路层-ethereal 抓包分析数据帧

    1.下载 http://dx1.pc0359.cn/soft/e/ethereal.rar 2.打开软件,指定抓取的网卡,下面是我抓取自己的主要网卡数据 3.开启个ping命令 , 不停的ping一台 ...

  10. 第五章:shiro密码加密

    在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码.比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储. 5.1 编码/解码 Shir ...