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

Posted

技术标签:

【中文标题】在 Mac 上通过导出 http_proxy 将 Ruby 与 Charles Proxy 一起使用【英文标题】:Using Ruby with Charles Proxy via export http_proxy on Mac 【发布时间】:2015-12-02 10:56:50 【问题描述】:

我想在 Mac OSX Yosemite 上运行一个简单的 Ruby 脚本 (Ruby 2.0),我想通过 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': 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】:

http_proxy 环境变量也应该包含协议。从这个意义上说,Curl 似乎很懒惰。

尝试通过设置代理

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

【讨论】:

如此简单,但我没想过要尝试这种变化!

以上是关于在 Mac 上通过导出 http_proxy 将 Ruby 与 Charles Proxy 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

[mac软件教程]如何将Excel导出为TXT格式?

执行Docker build时,有部分需要×××的需求,通过引入http_proxy 解决:

代理后面的 Java 应用程序在 linux 中使用 http_proxy 变量

在Mac上ppt导出pdf

在新 Mac 上创建 ipa 而无需从旧 Mac 导出开发者资料

如何在 Jenkins 的 HTTP_PROXY 后面使用 Dockerfile 构建 Docker 映像?