微信浏览器中的网络代理

我们开发的网站面对的是特定的人群,为了方便用户登录,做了IP登录,即用户只要在特定的网络环境下访问我们的网页,就可以直接登录。
但发现,用户在微信浏览器中访问我们的网页,但是同样网络环境下,用手机浏览器访问就不存在此问题。

首先面对这个情况-IP登录不行唯一的可能是IP地址变了,我用微信访问我们站点中的测试页面(IP及UA头部信息会贴出来),显示出用户的实际IP,发现,IP变了,那么对此只有一个可能性–微信进行了网络代理!!!

微信IP代理

分别使用我手头的安卓手机魅蓝note5和苹果手机iPhone6下的微信客户端访问出问题的网页,获取对应的ip地址信息,结果如下,
vs
看到这个结果,也要想到,是不是就这个网页存在此问题呢,我试试别的网页,如下为我自己搭建的站点,分别通过如上手机访问
vs-2
阿偶,发现不存在代理信息,那就证明微信并不是所有站点都走代理

说明:

  • IP即为后端通过请求信息拿到的ip,即为客户端的真实IP
  • IPS即为X-Forwarded-For,会记录客户端连接web服务器通过的层层代理IP信息

Google play上的微信

既然苹果版微信没有代理,而安卓版对于部分站点会存在代理,有这个差异,很大程度是苹果本身也严格,那么很容易想到国外版微信呢,毕竟谷歌商店也是很严格的,
so,下载了google商店的微信app,访问网站,发现与苹果一致,不存在代理ip问题。

结论

  • 微信安卓版与苹果版存在差异,苹果版不存在代理IP问题
  • 微信安卓版访问不同的站点,访问A站点IP不变,访问B网站,IP被代理,且代理字段本身不会添加跳板IP信息
  • Google Play下载的微信客户端访问任何网站不存在代理问题,与苹果版微信一致
  • 国内微信安卓版进行网络代理,并不是将代理信息放在X-Forwarded-For,也就意味着,服务器端不可能拿到客户端的真实IP

至于微信针对哪些站点,才会进行网络代理,那么这个就需要直接跟微信客服沟通得到了,单纯去测试找规律,费时且无意义。