利用fiddler和mock调试本地微信网页

微信公众号网页是比较特殊的页面,普通页面直接打开即可访问,但对于需要请求微信相关接口的部分需要安全域名认证。这导致了使用mock数据进行开发的页面没办法走完整个流程,还是需要把代码发布到服务器上才可以测试。而发布服务器的速度总是要时间的,每次修改都发布服务器耗时较长,大大延长了开发时间。使用一种本地开发的技术就比较重要了。

https是一种安全的认证,我们要进行伪造数据进行劫持的话就必需自签证书,通过系统信任就可以将https的数据指向任何我们想要的服务上。利用这个特性,调试微信网页就极为简单了。本文针对的是传统的静态网页,针对的是增量开发时的调试,全新的业务不适用于此方案,SPA网页可能需要其他工具,但原理是相同的。

1. 开启域名劫持

fiddler是一款极为强大的软件,可对数据进行抓取和代理。要实现域名劫持,就要利用工具进行配置。

  1. fiddler基础配置。网上教程有很多,具体配置就不讲了。关键点在于配置好https劫持,并在调试的手机上下载fiddler的证书进行安装。这一部分都是通用的,很容易做到。在配置完成可以对微信网页进行抓包后,查看是否所有的网页请求已经在fiddler中出现了。
  2. 配置域名代理。在fiddler右侧的tab页中选择autoResponder标签页,打开enable rules选项和unmatched requests passthrough。点击add rules。在下方的rule Editor分别输入:
上方:
REGEX:^https://server\.example\.com/(.*)
下方:
http://192.168.20.61:3838/$1

  其中 server\.example指的是需要劫持的域名, 192.*是你开启mock服务的机器地址和端口。此时再访问劫持的域名,会发现请求是发往本机的。原理是利用fiddler的正则功能,将目标域名路径后面的内容全部捕获,转发到我们局域网主机的端口上。只要在端口上实现相应的转发功能,就可以进行劫持了。

2. 开启mock服务

mock服务指的是本机服务。由于页面需要请求本机内容,接口中一部分需要请求真正的服务端,便于身份认证和获取微信认证相关内容,另一部分内容则需要进行API提供,在增量式开发时对服务端尚未完成或者使用测试账号数据量过少的接口进行mock。因此mock服务要满足以下几个条件:

  1. 能够对开发过程中网页进行增量构建。这个过程比较重要,全量构建导致构建速度过慢,不利于开发过程中快速调试。
  2. 能够对构建生成的文件提供静态资源服务。
  3. 能够提供404请求代理至服务器。
  4. 指定的API代理至指定的服务器。
  5. 能够提供便于编辑的API。

这些功能利用Nodejs其实都很容易做到。条件1中是根据开发过程决定的。我们公司使用的是gulp构建,利用browserify对require进行处理,同时添加autoprefixer进行css前缀的添加,rev模块对js和css进行hash值的计算并添加后缀。全量构建时会耗时较长,因为开发了一个增量式构建。其他的条件都是mock服务提供的。我之前开发的一套用于开发的mock服务xmocker可以实现这个功能。地址:https://github.com/wenlonghuo/xmocker-cli。原理是利用koa的洋葱圈模型,请求经过的路线如图所示。

mock流程图

流程比较简单,基本能达到我们的目的。同时,该Mock服务开启服务时启动gulp参数,为html注入脚本便于利用接口进行页面刷新(在安卓微信下不生效,总是从缓存中读取。另个对于劫持的域名也是无效的)。使用mocker start xx(项目简称)就可以启动项目了。启动后在项目列表页设置404代理模式为混合模式,添加必要的API。同时在项目信息中填写404代理地址为 https://server.example.com,提交即可。此时访问局域网内的网址就可以发现API和网页均是优先访问本地,404会请求服务器,达到了Mock的目的。

3. 调试

  同时完成步骤1和2后,微信中将链接发给自己的手机端,为正常访问服务端的地址,你会发现,网页和请求都是经由本机的Mock服务转发的。开始修改页面,手动刷新就可以看效果了。经测试,微信的上传图片认证是可以通过的,利用这个功能我实现了本机代码上传图片功能,完美的绕开了微信的认证。

4. 总结

  利用的https劫持实现的调试,告诉了我们一件事:不认识的证书千万别乱安装!!一旦手机上安装了未知来源的证书,https劫持是很容易的事,数据修改获取完成不在话下。另外,nodejs开发工具还是挺快速的,想要什么功能,只要逻辑走得通,实现起来很容易。

转载于:https://www.cnblogs.com/dreamless/p/7907883.html

利用fiddler和mock调试本地微信网页相关推荐

  1. 利用fiddler抓包爬取微信小程序数据

    利用fiddler抓包爬取微信小程序数据 1.背景原理 有些微信小程序无法在PC端进行访问 原因 判断非微信'内嵌浏览器',则禁止访问 解决方法 模拟微信'内嵌浏览器'进行访问,需要获取的数据有:Us ...

  2. 文本过滤后返回空值_利用Fiddler来Mock接口返回值

    前篇文章介绍了Mock测试的相关理论知识,今天就通过实战操作来演示一下如何通过Fiddler抓包工具来Mock接口返回值. 准备工作 准备一个服务端接口,可以自己用SpringBoot写一个简单的Re ...

  3. mac下本地调试微信网页

    调试微信网页,当然首推微信官方的开发者工具了 但是这个开发者工具只能调试服务端的网页,如果每次都去服务端发布,那效率也太低了,所以本地调试是当务之急 网上搜了很多,不是用各种工具就是抓包,实在是繁琐, ...

  4. vue开发本地调试微信网页授权

    vue开发本地调试微信网页授权 相关信息: 微信开发者工具 vue-cli3 1.修改hosts文件 这里可能会遇到无法修改的问题,可以通过修改权限或管理员权限打开修改 修改用户权限的操作如下: 修改 ...

  5. debug5x 微信_本地调试微信网页授权,获取code

    需求:微信网页授权要求配置授权回调页面域名,在没有域名,没有认证公众号的情况下,如何在本地调试呢. 1.申请公众号开发测试账号 体验接口权限表--网页服务--网页授权获取用户基本信息--修改 写上一个 ...

  6. 利用fiddler将本地网页放到某个域下

    注: 1)在学习慕课网课程<搜索框制作>中遇到如题困难,查找资料后解决,做此记录.课程网址http://www.imooc.com/video/263. 2)建议同时去学习慕课网课程< ...

  7. (第三方平台)开发相关,解除80端口占用,微信公众号分享jssdk实现,微信开放平台登录接口接入,2022微信分享接入本地调试,微信分享定制

    一.开发相关 1.平台地址 微信开放平台 QQ互联平台SDK 2.文章收集 来自CSDN兄台的QQ登录使用的教程 微信网站应用开发的详细流程和引导 VueJs单页应用实现微信网页授权及微信分享功能 [ ...

  8. 使用微信开发者工具调试微信网页授权登录-react

    转:https://www.jianshu.com/p/9ced1a297c95 1.使用localhost本地调试 使用微信开发者工具, 选择微信网页授权, 微信团队为广大的开发者提供了一个测试账号 ...

  9. 利用微信网页录音接口实现语音搜索

    微信网页接口有3个录音相关接口 开始录音接口 wx.startRecord(); 停止录音接口 wx.stopRecord({ success: function (res) { var localI ...

最新文章

  1. 与servlet Api 的集成
  2. winform datagridview控件使用
  3. JavaWeb开发模式:C/S模式,B/S模式,JSP+JavaBean模式,JSP+Servlet+JavaBean模式
  4. DCMTK:查询/检索服务类用户(C-GET操作)
  5. 下载人脸认证助手_认证助手最新版
  6. uva 1394poj 3517
  7. leetcode 21 合并两个有序链表 C++
  8. request用法_3分钟短文:说说Laravel页面会话之间的数据保存Session用法
  9. Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)
  10. 【DL-CV】神经网络的补充
  11. 使用SSMS将excel导入到sqlserver
  12. WinDriver Kernel Plugin开发
  13. 微生物的质谱鉴定原理
  14. 百度快速排名关键词点击软件
  15. mysql常见关键字的用法_MySQL 常用关键字用法详解
  16. 交换机短路_交换机端口短路 导致上网不正常
  17. UART串口通信常用协议对比——rs232、485的区别
  18. cv2.matchTemplate模板匹配和cv2.minMaxLoc()函数
  19. ACL的rule中的deny/permit在各个业务模块里的场景是怎样的
  20. PCIE 设备在位检测机理

热门文章

  1. Unity LOD Group
  2. 【数据库自习室#003】Mysql数据库函数
  3. 妹子说头像爬的太慢?升级到多线程程序爬取头像
  4. 通过bed文件获取fasta序列
  5. sonar代码质量检测告警“static“ base class members should not be accessed via derived types
  6. BeautifulSoup及爬取豆瓣评论
  7. 用Python一键保存半佛仙人所有的骚气表情包
  8. 构建之法---第一次作业
  9. 基于安卓的民宿客栈预定App丨有微信小程序
  10. 用宝塔面板网站php变成静态,宝塔面板可以建立静态网站吗?如何部署一个静态页面?...