使用浏览器访问或调试微信公众号(跳过微信认证)

因为大部分公众号web应用实际登录都是使用用户微信认证登录,下文主要是提供一种方法使在PC端使用任意浏览器绕过微信认证完成登录,后面就可以在浏览器中使用或调试web应用。

应用服务器(我们自己的第三方应用程序)需要知道是谁在访问服务(登录),而在微信公众号应用中登录一般都是使用静默的oauth2,由微信认证用户的真实性,并通知应用服务器当前用户是哪位(openid)

那能不能跳过微信应用程序由第三方来模拟(模拟微信应用程序,骗过微信oauth2服务器)完成oauth2授权?

当然如果您本身就是公众号的管理者那可以直接设置自己的帐号为该公众号开发者帐号,作为开发者帐号其实这些都不要去关心,因为你可以直接使用微信开发者工具去完成授权,然后在开发者工具中进行调试

但是即便拥有公众号开发者权限,大部分基于UI的自动化测试工具无法控制微信开发者工具,基本上都是控制浏览器本身,最终也还是需要在浏览器中提供验证。

上图是展示的一个一般情况下的微信授权过程。(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842)

请求1:一般就是一个对公众号网页的范围,一旦我们自己的应用服务器发现这个用户授权失效(没有相应cookie,或cookie对不上),那服务器返回302,要求用户(微信APP内置 浏览器)跳转至微信授权服务器 『https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect』 这里有个关键信息appid,应用服务器会把appid带上,以便微信授权服务器识别是那个公众号来授权了

请求2,3:用户按302的指示向微信服务器进行授权,在2,3中微信用户不仅把之前的appid带上,还带上了uni(user information 正常也只在微信跟微信服务通讯中用),跟一个关键的key。(这个key值每次授权不不一样,所以保存下来重放也无效),猜测key是由微信应用程序根据用户信息,公众号信息加密合成的,外部应用程序也是很难仿照。第2步 的 appid与uin向微信服务器换取了uuid,第3步,微信返回了关键的code参数,并通知微信应用程序301到 我们的应用服务的地址。 (实际上一旦应用服务器拿到code,后面的步骤就可以不一定一定需要微信APP参与了)

请求4:用户带着微信返回的code请求我们的应用服务器,我们自己的应用服务器拿到code后向微信授权服务器换取网页授权access_token 『https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code』 注意这个请求需要带上secret,即表示这个请求只能由我们的应用服务器来完成(secret不能公开)

完成请求5后我们的应用服务器已经拿到openid,access_token ,简单的应用取得openid后即已经能确定用户的身份了。如果需要用户的详细信息可以使openid,access_token用进一步向微信服务器请求

结束:一般应用服务器使用用户的openid标识用户,所以得到通过用户请求中的code获取到openid后即表示用户已经被认证,应用服务器此时通常在这个请求的response中加入Set-Cookie将登录信息写入微信浏览器(或者对之前的cookie的认证信息标记为有效)

通过上面简单的步骤可以看出来无论是客户端(微信)还是应用服务器都有私有的类似secret的数据,来保证各自的不可伪造性。所以无论是想要伪造谁都不是那么简单

但是一旦微信oauth2完成后的安全性就会变成一般浏览器的一样,应用服务器验证用户基本上都凭借请求中带的含有十分信息的cookie。也就是说我们只要能在微信公众号(服务号)应用完成认证后将相应的cookie取出并写入浏览器(或者其他调试工具),那浏览器就可以通过后面应用服务器的身份验证(无论当前网页使用怎样的域名甚至是前端人员的本地页面)

那现在就是2个步骤:

  • 获取网站授权完成后的cookie(cookie可能会有很多,而我们其实不用关注哪个是认证用户信息用的,全部拿过来就行了)。对于cookie的获取其实还是比较方便的,如果被设置为微信公众号的开发者可以直接使用微信web开发者工具,调试信息包括cookies也都会有,如果不是开发者无法进入调试模式也没有关系,任何针对http协议及更底层协议的抓包工具都可以查看request所携带的cookie信息。
  • 然后就是将cookies信息写入浏览器,如果是浏览器可以在Console中修改cookies,不过要求必须必须带有js执行能力的控制台的浏览器。还是一个就是通过response的head头 Set-Cookie来完成cookie的写入及修改。

下面接受一种更简单的步骤完上面2个步骤

使用Fiddler插件freeCookies 完成cookies的操作 (下载及使用说明: https://www.cnblogs.com/lulianqi/p/9481203.html)

直接在手机微信上打开公众号(订阅号)页面,使用fiddler抓取指定网站任意页面请求(也可以使用PC版微信打开公众号页面)

进入free cookies 标签页(free cookies 插件下载地址 使用说明)

选择目标域名网址的任意页面请求(注意图片及js资源可能不含有cookies信息)点击Get Cookies获取cookie (如下图)

打开本地调试页面(也可以是其他域名或是同一域名)

填写目标地址到UrlFilter,勾选Injeck Cookies,在浏览器中对该站点任意请求进行刷新操作(cookie 写入完成后建议取消勾选,或者不要勾选Inject Always)

写入cookies后就可以看到页面再与服务器的交互就已经完成了“登录”

最后下图展示一张京东到家公众号应用直接在chrome,并完成了微信的认证登录。(实际是手机微信的登录后将cookie再写到Chrome里,这里jd需要在浏览器中修改UA,chrome本身就可以直接修改UA)

以上使用到的 Fiddler插件freeCookies 说明见 https://www.cnblogs.com/lulianqi/p/9481203.html

源代码见github: https://github.com/lulianqi/FreeCookies

使用浏览器访问或调试微信公众号(跳过微信认证)相关推荐

  1. 【TUN模式】对QQ或者微信域名、QQ邮箱、微信公众号文章、微信开发者社区相关的网站访问非常慢、图片加载不出来、网页空白的解决方案

    一.问题背景 最近在电脑上登录微信时,或者浏览微信公众号的文章时,经常出现卡顿得出不来图片的情况,即使出来了也是排版异常. 二.研究现状(哈哈哈哈科研人的写作习惯?) 目前网上有些大咖对这个问题给出的 ...

  2. 微信公众号网页调用微信扫一扫功能

    目录 前言: 准备条件: 用到的微信接口 代码: 效果: 总结: 前言: 最近其他项目组需要在微信公众号里面调用微信的扫一扫功能,于是就帮忙一起搞了搞,一开始以为挺简单,从网上搜一下教程弄一下就可以了 ...

  3. 微信公众号开发之微信网页授权获取用户个人信息

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一丶概述 微信网页授权 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑 ...

  4. 通过微信公众号跳转H5页面领取现金红包

    通过微信公众号跳转H5页面领取现金红包 项目目的 通过公司微信公众号领取现金奖励 面向对象 公司内部员工 产品逻辑: 1.在微信公众号底部栏加一项"领取奖励",点击"领取 ...

  5. delphi XE关于微信公众号支付及微信零钱支付的便捷解决方案

    delphi XE关于微信公众号支付及微信零钱支付的便捷解决方案 https://download.csdn.net/download/pulledup/12683611 一.需求 因为微信公众号支付 ...

  6. 微信公众号引入使用微信JS-SDK

    微信公众号引入使用微信JS-SDK 一定要确定JS安全域名已经配置,不然会报错 导致config 配置不成功 引入JS-SDK npm install weixin-js-sdk --save 挂载引 ...

  7. 微信公众号数据2019_如何制作微信公众号图文素材 微信公众号采集器好用吗

    现在有很多人都会通过微信公众号来发布文章.图片,这时候就需要使用一些编辑技巧了.下面拓途数据就和大家一同来看看如何制作微信公众号图文素材,微信公众号采集器好用吗? 微信公众号图文素材 如何制作微信公众 ...

  8. 微信公众号数据2019_微信公众号榜单排名,2020微信公众号排名

    微信公众号榜单排名,2020微信公众号排名 公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少 ...

  9. 微信公众号数据2019_历史微信公众号排名,微信公众号新榜排名

    历史微信公众号排名,微信公众号新榜排名 公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人 ...

  10. 微信公众号鸿蒙盾额度认证为什么要交钱,微信公众号收费标准是什么?认证流程介绍!...

    做过公众号的人都知道,在认证的时候需要交纳年费,不然不能完成认证.可能有的人觉得没什么用,那就真的要看什么平台了,有的平台就是需要通过认证来获取一些功能,便于公众号的运营,所以不得不交认证费. 微信公 ...

最新文章

  1. app启动调用的api
  2. MSDN演练时发现的SqlServer2005数据库连接问题
  3. java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
  4. Spark的RDD操作之Join大全
  5. 如何使用SAP Cloud for Customer里的Data Source
  6. 【转】CANOPEN总线的相关问题点整理分享*****
  7. java浮点数四舍五入_Java小程序练习--浮点数的四舍五入
  8. [Design-Pattern]工厂模式
  9. 数据库面试 - 分库分表
  10. 架设WIN32汇编程序的开发环境
  11. Postgres用returning实现mysql的last_insert_id
  12. Outlook 邮箱备份操作手册
  13. Python绘制散点对比图
  14. 蜂巢式技术阵营简化IoT蓝图
  15. python 移动文件 覆盖_Python操作文件(删除、复制、移动...)
  16. 神舟笔记本电脑更改启动盘顺序
  17. day4. jetson nx 确认 SPI 时钟
  18. 大家好才是真的好,“通用设计”知多少
  19. 二叉树前中后序遍历的非递归实现以及层次遍历、zig-zag型遍历详解
  20. maven使用命令行打包

热门文章

  1. dropbox无法访问后国内网盘对比选择
  2. 读书笔记2014第11本:历史上最伟大的10个方程
  3. Shell中变量的单百分号%和双百分号%%的作用
  4. 光明勇士iOS服务器维护,裕际网络科技《光明勇士》3月11日 iOSamp;安卓部分区服数据互通公告 - 热门手游公告-TK游戏...
  5. 服务器蓝屏的原因及解决办法
  6. 阅读:IA-GCN: Interactive Graph Convolutional Network forRecommendation
  7. python项目总结
  8. KUI-金山界面库 自定义消息
  9. Python图像处理【5】图像扭曲与逆扭曲详解
  10. 广州海客智能机器人:为什么要让孩子从小学习机器人课程