V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zhgqthomas
V2EX  ›  分享创造

如何解决目前微信小游戏无法进行网络请求的问题

  •  
  •   zhgqthomas · 2018-01-03 13:09:36 +08:00 · 5116 次点击
    这是一个创建于 2552 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    在昨天发过的如何获得微信小游戏跳一跳源码的文章中,记录了我个人在获取微信小游戏跳一跳源码中的实践。

    跟大家在交流中很多人说源码是压缩过的可读性很差,拿到源码也没有意义。但是其实只要将代码格式化后,代码的可读性还是很高的,而且通过微信开发工具断点调试,一些逻辑还是很容易梳理清楚的。

    上图就是通过断点调试找到了最终提交 score 的网络请求

    另外问的最多的就是目前小游戏无法进行网络请求的问题,如下图

    这是因为不管是小游戏还是小程序,网络请求都是受到限制的,需要在微信公众平台中注册合法的服务器域名,如下图所示

    但是目前小游戏还没有开放注册,所以是无法进行服务器域名配置的,而微信开发工具提供的测试小游戏 APP ID 是 wx6ac3f5090a6b99c5 是没有配置任何的服务器域名的

    但是在万能的抓包工具 Charles 帮助下,是可以打破这个限制的

    对 Charles 不太了解的可以参考一下这篇文章

    操作

    首先打开 Charles 并运行 Charles 对本地电脑进行 HTTPS 抓包,因为对 HTTPS 进行抓包需要安装证书,具体的操作步骤请参考 Charles 从入门到精通

    之后打开微信开发工具,然后新建一个项目,使用 wx6ac3f5090a6b99c5 做为 APP ID,这是微信默认小游戏测试开发 ID,然后新建一个空的小游戏项目,点击确定之后,查看 Charles 的控制台

    找到以下的访问请求

    https://servicewechat.com/wxa-dev-logic/batchgetappattr
    

    查看该请求的返回包体,会发现默认返回的服务器域名是空数组

    在这里只要使用 Charles 的 Map 功能在请求返回的 reponse 信息里面,加入我们想访问的服务器域名,就可以突破微信开发工具对小游戏网络请求的限制了

    在 Charles 的菜单中,选择 “ Tools ”-> “ Map Local ” 即可进入到相应功能的设置页面

    然后在对应配置选项中输入以下信息,本地的 reponse 文件可以参考这里

    完成以上配置之后,退出微信开发者工具,再打开刚才新建立的项目,就会发现此时的项目设置里面已经有了我们想要添加的服务器域名了

    而且调试小游戏的网络模块,发现网络是可以进行访问的

    总结

    目前小游戏还没有开放注册,但是可以先通过这种方式突破小游戏对于网络请求的访问限制,提前进行开发。

    8 条回复    2018-01-04 16:40:05 +08:00
    bravecoder
        1
    bravecoder  
       2018-01-03 13:29:52 +08:00
    哈哈,赞,我就是这么调试的
    Bazhe
        2
    Bazhe  
       2018-01-03 13:30:42 +08:00
    漂亮
    zhgqthomas
        3
    zhgqthomas  
    OP
       2018-01-03 13:34:47 +08:00
    @bravecoder High Five 哈哈哈
    Yumozhi
        4
    Yumozhi  
       2018-01-03 15:29:05 +08:00   ❤️ 2
    还有种更简单的方法

    项目目录 project.config.json
    setting 中添加 urlCheck 设为 false
    zhgqthomas
        5
    zhgqthomas  
    OP
       2018-01-03 15:52:51 +08:00
    @Yumozhi 我以为那个选项只是用来检验是否是 HTTPS 的,白忙活了半天
    lsido
        6
    lsido  
       2018-01-03 17:36:05 +08:00
    兴冲冲的我还以为可以不用再自己写小程序了
    jyf
        7
    jyf  
       2018-01-04 14:04:47 +08:00
    微信的容器里可以随便跨域发请求么? 我还以为是走微信网关做了次代理呢
    lydspet
        8
    lydspet  
       2018-01-04 16:40:05 +08:00
    可以把 4.wxapkg 或者 5.wxapkg 发我一份吗,现在下载不到了,谢谢
    [email protected]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:06 · PVG 23:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.