如何本地调试有IP限制的三方接口

经常碰到三方接口有ip限制,需要将我们这边的ip地址加入对方的白名单才能进行访问测试。
这就给测试增加了难度,有以下原因

  • 本地 ip 是动态的
  • 不允许将本地 ip 提供给三方

以前每次测试都提交到测试环境,然后测试,改动多的话就会特别麻烦。
后面查找有没有方法本地就可以测试,发现http代理可以实现,配合guzzle的代理使用特别方便。

    resolver x.x.x.x;       #指定DNS服务器IP地址(需替换成自己的)  
    location / {  
        proxy_pass https://$http_host$request_uri;     #设定代理服务器的协议和地址 
        proxy_set_header HOST $http_host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k; 
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;
    }

但是这个有几个问题

  • 没有防护,所有人都能使用此代理(已经看到很多访问了:()
  • 目前没法通过域名设置代理,只能通过 ip 加端口,所以代理都是 127.0.0.1:8080 这种。
  • 没法直接访问 https 请求,需要将改成 http 在 proxy_pass 指定协议 https (每次设置都很麻烦)

大家有没有“优雅”的方式调试这种三方 ip 限制的接口?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 16

最近我也遇到类似的情况。我这边是这样,第三方服务的api会限制ip,而且只能填一个。我现在的做法是第三方服务的平台中填写服务器A的ip,然后在服务器A上写一个转发程序,本地服务器B或者其他服务器C调用服务器A上的转发程序,服务器A再把接收到的数据提交到第三方服务。

6个月前 评论
cxcsz (楼主) 6个月前
mofung (作者) 6个月前
cxcsz (楼主) 6个月前
mofung (作者) 6个月前
cxcsz (楼主) 6个月前
cxcsz (楼主) 6个月前
sanders

:sweat_smile: 标准流程应该是自己做 mock 吧。

6个月前 评论
cxcsz (楼主) 6个月前
Imuyu 6个月前
sanders (作者) 6个月前

A 做个代理服务器,然后其他服务器使用 socks 访问

6个月前 评论

找台云服务器,搭建个nginx转发一下,第三方平台配置云服务器ip。

location /xxxx/ {
      access_by_lua '
        ngx.req.set_uri_args(params)   验证等
      ';
      proxy_pass http://原始网址;
      proxy_cache cache_one;
      proxy_cache_valid 200 304 302 90s;
      proxy_cache_bypass $arg_nocache;
   }
}
6个月前 评论
yyy123456 6个月前
skarner

白名单加你们自己公司的一台机器的IP(比如测试环境机器的公网IP)

然后再在这台机器上转个代理

本地请求通过这台机器的代理去请求即可

6个月前 评论
GDDD

workerman很快就能搭建http代理服务器

6个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!