在Mac上通过导出http_代理使用Ruby和Charles代理

在Mac上通过导出http_代理使用Ruby和Charles代理,ruby,proxy,environment-variables,charles-proxy,Ruby,Proxy,Environment Variables,Charles Proxy,我有一个简单的Ruby脚本(Ruby 2.0),我想在MacOSX 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

我有一个简单的Ruby脚本(Ruby 2.0),我想在MacOSX 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
如果我执行这个脚本,一切正常,但我在Charles中看不到请求

只要我通过命令行设置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”:坏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

我做错了什么?

http\U代理环境变量也应该包括协议。从这个意义上说,Curl似乎是懒惰的

尝试通过设置代理


导出http\u代理=”http://localhost:8888“

很简单,但我没想到会尝试这种变化!