微信公众平台开发获取微信服务器IP地址

如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息。

接口调用请求说明

http请求方式: GET

请求地址:https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN

参数说明:

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{
    "ip_list": [
        "127.0.0.1",
        "127.0.0.2",
        "101.226.103.0/25"
    ]
}

返回参数

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

同样,按照尽量把功能函数化,模块化,输入参数,输出结构的思想,帅华君写了一个获取微信服务器IP地址列表的函数:

这个函数用到了上一篇获取的access_token函数(模块化的思维),注意,这里获取access_token使用的是getAccessionToken 而非updateAccessToken,原因在上一篇说的很清楚了,自定义的updateAccessToken函数会强制耗费一次有限的请求次数,而getAccessionToken会先从数据库查询access_token有无过期,所以会经常用到getAccessionToken函数。

咦?你会不会问怎么不能直接复制粘贴呢,是啊!那您长脑子干嘛呢?只会一味的复制粘贴网上的现成的东西,并不是一个好的学习过程,不是说不要模仿,而是应该把模仿最终稳扎稳打的落实到指尖上,自己敲几遍代码,思考还有没有更好的算法,这对你将大有裨益的。慢下来,安静下来,独处起来,你会开始学会独立思考,而非乌合之众、人云亦云。

你会不会又觉得我完全反对人云亦云或者强调一定要孤独的思考呢?看啊,语言的苍白无力啊,一切事物的正反两面啊,这真是一个值得写一篇文章的哲学问题。

我希望你能带着批判的挑毛病的质疑的眼光看待一切事物,包括我写的代码,这样才能形成你的风格你的代码。

有了上边的获取微信服务器IP地址的函数,之后如果去要判断请求是否来自于微信服务器,就可以使用这个函数了,你可能会因为请求access_token的经验而问,为什么不把微信服务器的IP地址存储到数据库中,如此一来就不需要每次都请求了呀,能想到这一点很好呀。可是谁知道微信服务器的IP地址是否有增加或删除呢,如果服务器IP地址列表是一成不变的,微信何必要写一个获取IP地址的列表呢,直接硬编码好啦。

下方是帅华君写的一个传入请求方的IP地址,返回真/假值,告知开发者请求是否来自微信服务器。

将检测请求是否来自微信服务器添加到中间件:

如果请求不是来自微信服务器则返回一段话:“帅华表示然并卵~”

下一篇《socket.io官方文档中文版【上篇】》

上一篇《微信公众平台开发动态获取与更新access_token》

永久链接 http://www.shuaihua.cc/article/wechat-development-server-side-gain-server-ip-address

快速跳转 心头好文 - language - 《微信公众平台开发获取微信服务器IP地址》

发布日期 2017年9月6日 星期三

版权声明 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证