利用网络劫持解决微信远程域名真机调试Api问题

背景

虽然微信提供了开发者工具,可以满足大部分调试需求,但遇到如微信支付、微信扫码等类似接口时,我们不得不使用真机+域名来调试。

问题

因为只有被微信后台设为信任的域名才能被微信正确验证与签名。

我们只需要将被信任的域名解析为开发机的Ip地址,并将路由设置NAT转发80端口(因为微信被信任域名不允许加端口号)。

大家都知道,国内的80端口一般是被封掉的,所以就算域名解析到开发机的Ip地址,我们也不能正常访问该域名。

常见解决方案,较为复杂如下:

1、将代码打包并部署到能访问80端口的外网服务器。

2、使用第三方内网穿透服务,安装客户端,并将本机某个端口映射到三方服务器,三方服务器提供一个可访问80端口的域名做跳转。

但以上处理方式部署方式过于复杂,调试起来过于麻烦,如想采用以上方法请网上搜索相关设置,资料较多,这里不多做介绍。

本文笔者介绍一种更为便捷的解决方案。

相关工具

1、网络代理工具:微信开发者工具

2、hosts:windows 和 MAC 都有这个文件,具体在哪,网络查一下就知道。

解决方案

1、我们在手机设置代理地址为你的开发机的ip地址,让手机的所有数据包都经过开发机

2、我们修改hosts记录,把被微信信任的域名(如:YouDomainName.com)添加到hosts文本文件中劫持为你的开发机地址

这样你在手机访问YouDomainName.com时,由于设置了代理地址为开发机的Ip地址,就会被hosts强行劫持到你的开发机

因为YouDomainName.com是被微信信任的,所以在微信中访问YouDomainName.com是可以正常通过验证与签名的。

就这样,你正常打开IDE并运行web服务器,即可边开发边真机调试。

注意

1、务必保持手机wifi与开发机在同一个局域网内并能内网互通。

2、笔者在高版本的微信开发者工具中没有找到“移动调试”的选项卡,所以无法打开网络代理工具,但可以使用 spy-debugger 这个工具更好的替代

设置截图

1、微信开发者工具

利用网络劫持解决微信远程域名真机调试Api问题

2、hosts

利用网络劫持解决微信远程域名真机调试Api问题

相关推荐