通过在Mac上导出http_proxy将Ruby与Charles Proxy一起使用

时间:2015-12-02 10:56:50

标签: ruby proxy environment-variables charles-proxy

我有一个简单的Ruby脚本(Ruby 2.0),我想在Mac OSX Yosemite上运行,我想通过Charles Proxy代理网络请求。

require 'json'
require 'net/http'
require 'net/https'

class Charles

def go

    uri = URI.parse('http://example.com')
    req = Net::HTTP::Get.new(uri.request_uri)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = false
    res = http.request req

    puts res
    puts res.body

end

end

net = Charles.new
net.go

如果我执行此脚本,一切都很好,但我在查尔斯看不到请求。

一旦我通过命令行设置了http代理,脚本就会出现错误:

export http_proxy=192.168.1.108:8888

/Users/hug/.rvm/rubies/ruby-2.0.0-p643/lib/ruby/2.0.0/uri/common.rb:176:in“split&#39 ;: bad URI(不是URI) ?):192.168.1.108:8888(URI :: InvalidURIError)

之后
unset http_proxy

它再次起作用。我也试过

export http_proxy=locahost:8888
export http_proxy=machinename.local:8888

所有这些设置代理的方法都适用于curl,但Ruby没有。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

http_proxy 环境变量也应该包含协议。在这种意义上,卷曲似乎很懒惰。

尝试通过

设置代理

export http_proxy="http://localhost:8888"