获取微信服务器IP地址的核心目的是为了在服务器防火墙或安全组中放行微信的请求,确保开发者能正常接收微信消息回调或调用微信API。
你为什么要关心微信服务器IP地址
很多开发者第一次接触微信开放平台或公众号开发时,都会遇到一个问题:微信服务器发来的请求被自家服务器拒绝了,原因很简单你的防火墙没有放行微信的IP,微信的回调通知、API调用都需要从微信服务器发起,如果你的服务器只允许特定IP段访问,就必须把微信的服务器IP加进白名单,否则,用户给你发消息,你的服务器收不到;你调用接口,微信也可能返回超时。
场景非常具体:企业微信的审批回调、公众号的被动回复、小程序的云开发Webhook,甚至微信支付的成功通知,都依赖微信服务器主动连接你的服务器,这些请求的来源IP如果不在白名单内,就会被拦截,行业共识认为,绝大多数接入微信生态的服务端应用,都需要在初期完成IP白名单配置。
另一个常见场景是安全审计,企业内部的安全策略要求对外部访问来源进行严格管控,微信服务器IP作为必须放行的源地址,需要被明确记录并定期核对,不少企业还会在第三方服务商那里部署应用,同样需要把微信服务器IP加入云防火墙的入站规则。
微信服务器ip地址怎么获取:官方途径与手动方法
获取微信服务器IP地址并不是一件难事,但很多人会走弯路,有些开发者试图从百度搜索“微信服务器ip地址列表”,然后找到一些过时的博客,结果配置后依然不通,正确的做法是直接从微信官方获取。
通过微信官方API获取
微信官方提供了一个接口,专门用于查询微信服务器IP地址,这个接口不需要任何权限,直接调用即可返回最新的IP列表,具体路径如下:
- 请求方式:GET
- 接口地址:
https://api.weixin.qq.com/cgi-bin/get_api_domain_ip - 访问凭证:需要携带access_token(通过appid和secret获取)
操作步骤很简单:先用你的公众号或小程序的AppID和AppSecret换取access_token,然后调用上述接口,返回的JSON数据中包含一个ip_list字段,里面就是当前所有微信服务器IP地址。
建议直接使用curl命令测试:

curl https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=YOUR_APPID&secret=YOUR_SECRET
拿到token后,再调用:
curl https://api.weixin.qq.com/cgi-bin/get_api_domain_ip?access_token=YOUR_TOKEN
返回结果类似:
{
"ip_list": ["101.226.103.0/25", "101.226.62.0/24", ...]
}
这里的IP段以CIDR格式表示,直接复制到你的防火墙白名单中即可。
通过域名解析获取
微信服务器除了IP地址,还对应一组域名,你可以通过解析这些域名来获取IP,但需要注意,域名解析结果可能包含多个IP,且会动态变化,常用域名包括:
api.weixin.qq.comsh.api.weixin.qq.com(上海节点)sz.api.weixin.qq.com(深圳节点)
使用nslookup或dig命令可以查看当前解析到的IP,但这种方法不推荐作为白名单的唯一来源,因为域名解析会随负载均衡调整而变化,而防火墙白名单通常需要静态配置。多数情况下,官方API返回的IP列表是最可靠的。
使用第三方维护的列表(注意风险)
网上有一些人维护了微信服务器IP列表,甚至做成GitHub仓库定期更新,这类资源有一定参考价值,但风险不容忽视,第三方列表可能更新不及时,或者混入错误IP,导致请求被错误放行或拦截,如果你确实需要快速获取一份列表,建议核对官方API的结果后再使用。不要依赖非官方来源配置生产环境的白名单。
微信服务器IP地址的变更和更新机制
很多开发者以为配置一次IP白名单就万事大吉,但微信服务器IP会随着机房扩容、线路调整而发生变化,如果你不主动更新,某天微信突然切换了IP,你的服务就会中断。
微信IP会变吗?
微信官方文档明确说明,服务器IP地址可能会不定时更新,据统计,近几年微信服务器IP段平均每季度会有一次小规模调整,但具体日期不固定,变更范围通常涉及部分IP段的增删,不会频繁大规模变动,但一旦变更,影响面很广。
如何自动更新IP白名单
手动更新显然不现实,自动化方案是必须的,常见做法是写一个定时任务,每天凌晨从微信官方API拉取最新的IP列表,然后对比当前白名单,自动增删,具体可以这样操作:

- 使用cron或类似工具,设定每天凌晨2点执行一次脚本。
- 脚本调用微信API获取IP列表,并保存到本地文件。
- 将新的IP列表与当前防火墙规则对比,找出需要增加或删除的IP段。
- 执行防火墙命令更新规则(如iptables或云服务商API)。
核心逻辑很简单:定期拉取,差异化更新,如果你使用的是云服务器,很多云厂商提供了安全组API,可以直接通过脚本调用,实现全自动更新,酷番云可以用tencentcloud-sdk-python操作安全组规则,简米云也有类似SDK。
对于没有自动更新条件的开发者,至少应设置一个提醒机制,比如将IP列表变更记录发送到邮箱或钉钉群,收到通知后手动核对更新,但长期来看,自动化才是可靠的方案。
实际操作:配置服务器防火墙白名单
理论说完了,我们实际操作一下,假设你有一台Linux服务器,需要放行微信服务器IP段,下面给出两种常见环境的配置方法。
Linux iptables示例
如果你直接使用iptables管理防火墙,可以这样添加规则:
# 允许微信服务器IP段访问本机80和443端口 iptables -A INPUT -s 101.226.103.0/25 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 101.226.103.0/25 -p tcp --dport 443 -j ACCEPT
注意,微信服务器回调通常使用HTTP或HTTPS,所以放行80和443即可,如果微信服务器需要访问其他端口,根据实际情况调整。
将多个IP段逐条添加后,最后记得保存规则:
iptables-save > /etc/iptables/rules.v4
酷番云安全组示例
如果你的服务器在酷番云,操作更简单,登录控制台,进入安全组页面,找到你的服务器关联的安全组,添加入站规则:
- 来源:填写从API获取的IP段,如
226.103.0/25 - 协议端口:TCP:80,443
- 策略:允许
重复添加所有IP段即可,简米云、华为云操作类似,都是通过控制台或API完成。
有一个细节需要注意:微信服务器IP段的CIDR前缀长度可能不同,有些是/25,有些是/24,甚至更短,全部复制进去,不要遗漏。

获取微信服务器IP地址的常见问题
微信服务器IP地址是固定的吗?
不是固定的,微信官方会不定期调整服务器IP段,以优化网络质量和扩展容量。定期更新白名单是必要的,部分开发者长期不更新,遇到服务突然中断,排查后发现是微信IP变更导致,这种情况并不少见。
为什么我获取的IP地址无法访问?
有几种可能的原因,第一,你获取的IP列表可能不完整,比如只调用了get_api_domain_ip接口,但该接口返回的IP地址仅限于API调用场景,微信回调通知的IP地址可能需要通过另一个接口获取,微信官方提供了getcallbackip接口,专门用于获取回调服务器的IP地址,如果你只配置了API域名的IP,回调请求可能仍然被拦截。
第二,你配置的防火墙规则可能不正确,检查安全组或iptables规则,确保来源IP段、协议、端口都匹配,第三,微信服务器可能使用了新的IP,而你获取的列表是旧的。建议每次配置前都重新调用一次API,确保使用最新数据。
微信服务器IP地址列表是否包含所有IP?
不包含所有,微信服务器IP地址分散在不同区域和用途,官方API返回的IP列表仅覆盖了通用场景,如果你使用了微信支付、企业微信等特殊服务,可能还需要额外获取对应的IP段,微信支付的回调IP地址可能与通用API IP不同,需要查阅微信支付文档单独获取。企业微信的服务器IP地址也有独立列表,需要从企业微信管理后台或API获取。
遇到请求来源IP不在白名单内的情况,最直接的方法是查看服务器日志,找到被拒绝的源IP,然后手动放行,这种方法虽然粗暴,但往往能快速解决问题。
获取微信服务器IP地址不是一次性的任务,而是一个需要持续维护的流程。核心结论是:通过微信官方API获取IP列表,并建立自动化更新机制,才能确保服务稳定,忽略这个环节,你的微信集成应用随时可能因为IP变更而中断,无论你是刚入门的开发者,还是维护大型系统的运维人员,理解并正确配置微信服务器IP白名单,都是接入微信生态的基础工作。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/718173.html


评论列表(2条)
这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是微信服务器部分,给了我很多新的思路。感谢分享这么好的内容!
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于微信服务器的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!