我有一个简单的 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
如果我执行这个脚本,一切正常,但我在 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_proxy 环境变量也应该包含协议(protocol)。从这个意义上说,Curl 似乎很懒惰。
尝试通过以下方式设置代理
export http_proxy="http://localhost:8888"
关于ruby - 在 Mac 上通过 export http_proxy 使用 Ruby 和 Charles Proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34040990/