何が起こるかを正確に示す要点を作成しました。
https://gist.github.com/4418148
Ruby の 'net/http' ライブラリと 'socksify/http' を使用するバージョンをテストしたところ、完全に機能しましたが、EventMachine バージョンが予期しない結果を返す場合。
Tor Browser の応答は正しいですが、EventMachine を使用すると正しくありません!
応答を返しますが、プロキシの有無にかかわらず、ブラウザー、net/http 経由で要求を送信したときに返された応答と同じではありません。
便宜上、ここにも貼り付けます。
require 'em-http-request'
DEL = '-'*40
@results = 0
def run_with_proxy
connection_opts = {:proxy => {:host => '127.0.0.1', :port => 9050, :type => :socks5}}
conn = EM::HttpRequest.new("http://www.apolista.de/tegernsee/kloster-apotheke", connection_opts)
http = conn.get
http.callback {
if http.response.include? "Oops"
puts "#{DEL}failed with proxy#{DEL}", http.response
else
puts "#{DEL}success with proxy#{DEL}", http.response
end
@results+=1
EM.stop_event_loop if @results == 2
}
end
def run_without_proxy
conn = EM::HttpRequest.new("http://www.apolista.de/tegernsee/kloster-apotheke")
http = conn.get
http.callback {
if http.response.include? "Oops"
puts "#{DEL}failed without proxy#{DEL}", http.response
else
puts "#{DEL}success without proxy#{DEL}", http.response
end
@results+=1
EM.stop_event_loop if @results == 2
}
end
EM.run do
run_with_proxy
run_without_proxy
end
説明をいただければ幸いです。