Rails app使用代理调用API

时间:2015-02-07 13:45:08

标签: ruby-on-rails macos proxy

我订阅了一项API服务,该服务提供基于静态IP的访问(适用于实时和测试)。

由于我的开发区ISP没有提供静态IP,因此我启用了对我的临时机IP的API访问,这是静态的。我在我的登台服务器中安装了squid并启用/设置了代理服务器,以便我可以将其用作代理并在开发时调用API。

我正在使用Mac进行开发和联网>代理设置不适用于系统范围(终端)。因此,我使用的是试用版的MacProxy,proxifier(代理客户端),所有这些都运行良好,直到试用期满。 Mac有免费替代品吗?

我尝试通过创建ssh socks proxy并设置http_proxy =“xxx”来设置代理。在终端。当我使用 curl ipecho.net/plain检查终端IP帖子设置时; echo ,它显示正确的IP,但是当我运行本地rails开发服务器并尝试访问API时,它使用无效IP拒绝调用(它显示非代理IP)

2 个答案:

答案 0 :(得分:0)

可能解决您问题的免费替代方案可能是github上的项目:

  

sshuttle read me

它转发TCPDNS请求远程ssh服务器。

sshuttle的最基本用法如下:

./sshuttle -r username@sshserver 0.0.0.0/0 -vv

要对您可能执行的所有流量进行隧道传输:

./sshuttle --dns -vr ssh_server 0/0

还有可用的辅助函数here,它可以简化一些命令。

答案 1 :(得分:0)

ruby​​应用程序不使用系统级代理设置。通常,这是传递给用于建立连接的库的代码级选项。

如果您希望Savon使用代理,那么您需要在创建客户端时将其传递给Savon:

client = Savon.client(proxy: "http://example.org", ...)

如果在gem内部进行此调用,那么除非该gem已经提供了该选项,否则您需要将其分叉以添加选项

你提到的宝石似乎已经实现了这个 - 它的configuration类有一个似乎传递给savon的代理属性。