解决微信公众号本地开发时的IP白名单问题

由于公司办公网络 IP 不是固定的,每次变更时,本地开发机器调用微信开放平台接口时都会因为IP白名单问题而报错

一个有效但繁琐的解决办法是,每次报错时,手动获取本机新的IP并登录开放平台将IP加入到白名单中。

这样做,一两次还好,如果经常如此,怕谁也受不了。

下面提供一个更高效的方式。(这个方式不限于公众号开发,基本上所有同类问题都可照此方法解决!)。

既然问题出在 IP 会变化上,我们就想办法弄一个不会变的 IP 来使用。

互联网公司基本都会有自己的公网服务器,而且这个公网服务器 IP 一般是不会变的,能利用这个不变的 IP ,岂不妙?

怎么做?

之前的文章 《ssh二三事》中,介绍过 SSH 的一些用法,尤其是强大的端口转发。

我们要做的,是把公网服务器的 IP 设置到开放平台IP白名单中,再将公网服务器设置为一个代理,本地开发机器使用这个代理来发送请求。如此一来,当本地机器调用开放平台接口时,对开放平台而言,看到的 IP 会一直是公网服务器的,不会受到本机 IP 改变的影响。

目的达成。

实现步骤如下:

  1. 打开动态端口转发(socks5代理):
# 在开发机器上执行
ssh -D 12345 -N your_server

your_server 换成公网服务器登录地址。

通过以下命令检查代理是否成功:

# 在开发机器上执行
# 会发现返回的ip是公网服务器的ip
curl -x socks5://127.0.0.1:12345 httpbin.org/ip
  1. 在IDE中设置jvm运行参数:
-DsocksProxyHost=localhost -DsocksProxyPort=12345

Intellij IDEA 中设置截图如下:

解决微信公众号本地开发时的IP白名单问题
  1. 给用到的网络库设置代理

如果你用的是 Spring 框架内置的 RestTemplate 来调用公众平台接口,请参考网络上设置代理的方法。

我用的是封装好的微信公众平台API,试了一下,它会自动应用上上面的jvm参数:

<!-- 我使用的公众平台库 -->
<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-mp</artifactId>
    <version>3.9.0</version>
</dependency>

以上,本地开发时的IP白名单问题就化解了,不用再为频繁变动的 IP 问题而烦扰。

– END –


原文始发于微信公众号(背井):解决微信公众号本地开发时的IP白名单问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/246723.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!