2

cntlm や同様のローカル プロキシ経由ではなく、「ネイティブに」NTLM プロキシ認証をサポートする Ruby HTTP クライアント gem を探しています。

ヒントをいただければ幸いです。

4

3 に答える 3

2

A little digging unearthed Typhoeus:

require 'typhoeus'
e=Typhoeus::Easy.new
e.url="http://www.google.com/"
e.proxy = {:server => "1.2.3.4:80"}
e.proxy_auth={:username => "user", :password => 'password'}
e.perform
于 2012-06-15T09:25:16.677 に答える
1

Typhoeus は転用されたようです。libcurl ラッパーは Ethon ( https://github.com/typhoeus/ethon ) になりました。

別の libcurl ラッパーであるCurb ( https://github.com/taf2/curb ) を使用して、NTLM プロキシで認証に成功しました。

require 'spec_helper'
require 'curl'

describe Curl do
  it 'should connect via an ISA proxy' do
    c = Curl::Easy.new('http://example.com/') do |curl|  
      curl.proxy_url = 'http://username:password@localhost:8080'
      curl.proxy_auth_types = Curl::CURLAUTH_NTLM
    end

    c.perform

    headers = c.header_str.split("\r\n")
    #puts headers.inspect

    headers.should include 'X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.19'
  end

end

必要に応じて設定とアサーションを変更します。

于 2013-07-10T14:52:31.180 に答える
1

必要な機能の数に応じて、Typhoeus と Ethon で ntlm を実行できます。Typhoeus は Ethon よりも多くの能力を持っていますが、Ethon はレベルが低いほど強力です。

require 'ethon'
easy = Ethon::Easy.new(
  url: "http://www.google.com/", 
  proxy: "1.2.3.4:80", 
  proxyuserpwd: "user:password", 
  proxyauth: "ntlm"
)
easy.perform

Typhoeus は同じオプションを受け入れます:

require 'typhoeus'
request = Typhoeus::Request.new(
  "http://www.google.com/", 
  proxy: "1.2.3.4:80", 
  proxyuserpwd: "user:password", 
  proxyauth: "ntlm"
)
request.run

私は両方のコード例をテストせずに書きました。プロキシがなく、最新の Typhoeus/Ethon バージョン (あなたの例によれば、まだ持っていません) を使用しています。

于 2013-07-25T22:33:54.653 に答える