微信与服务器端通信方式的变迁是为什么?

最近发现系统的微信认证很慢,有的甚至连接不上,发不出消息,就到网上搜索了下,还真发现了关于微信的细微变化,这点是表现在微信的请求方式上。

做广告路由器的人都知道,微信认证的前提是放行微信相关的域名,或者是采用过滤URL的方式放行跟weixin相关的字符串请求。

第一种方式的危险就在于更新微信服务器的时候,会导致以前的固件需要更新,第二种方式,也算是擦边球,如果里面不包含所请求的字符串,那就玩玩儿了。

所以了,这里抓包分析了下,发现微信现在并不是直接请求固定的域名了,而且通过如下方式:

微信与服务器端通信方式的变迁是为什么?

这里采用

POST http://short.weixin.qq.com/cgi-bin/micromsg-bin/newauth HTTP/1.1
Accept: */*
Cache-Control: no-cache
Connection: close
Content-Length: 893
Content-Type: application/octet-stream
Host: short.weixin.qq.com
User-Agent: MicroMessenger Client

URL: weixin的绝对url.

整个架构图类似如下:

微信APP->HTTP/DNS代理服务器->微信服务器地址

这里我有两个疑问:

  1. 第三方服务器为什么是IP地址
  2. 微信APP什么时候更新的地址

第三方服务器为什么是IP地址

我仅仅可以想到两种好处:
- 分流,降低负载, 多个服务器可以分摊多用户对同一台服务器的请求压力。
- 躲过其他服务的过滤,这里也许是为了避过阿里DNS,自己的服务器作为DNS代理。

有了这两种好处,我想做也是必须的,万一哪天阿里使坏,微信可是要倒霉了。
再深思一下,就会觉得DNS代理是最靠谱的,毕竟如果做负载均衡,采用域名就好了,IP地址选用可以完全让APP和服务器之间建立直通链路,防止阿里狙击。

微信APP什么时候更新的地址

如果是升级6.1固件的时候做的那倒是没什么特别的。

如果不是,那就有意思了,难道微信内部存有接口,可以通过服务器定制数据来控制请求服务器的地址或者是动态修改。这样的逻辑还是挺有意思的。

微信与服务器端通信方式的变迁是为什么?

上一篇:django+sae微信开发-简单的鹦鹉学舌功能


下一篇:网站微信登录-python 实现