ruby - 在 Mac 上通过 export http_proxy 使用 Ruby 和 Charles Proxy

标签 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

如果我执行这个脚本,一切正常,但我在 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/

相关文章:

ruby - 如何要求用户输入并存储输入然后显示

ruby-on-rails - 这行在 Ruby 中是什么意思?

c# - 重载显式 CAST 运算符

批量动态嵌套环境变量

configuration - 读取配置值的顺序是什么?

docker - 如何在docker-compose.yml中添加包含字母和数字的环境变量?

ruby - 在 Shell 脚本上运行 .rb (Ruby) 文件

ruby-on-rails - 错误无法加载此类文件 -- user_agent/browsers/playstation (LoadError)

python - 通过代理在 Windows 10 上安装 Python pip 包

python - 如何代理和记录 SSL 流量