net-2013-08-31
rubyとtorの連携   nokogiri _ mechanize socksify
rubyからtorを利用する為にsocksプロキシを使う

gem install socksify


require "mechanize"
require 'socksify/http'

uri = URI.parse("http://www.ugtop.com/spill.shtml")
res = Net::HTTP.SOCKSProxy('127.0.0.1', 9150).start(uri.host, uri.port) do |f|
f.get(uri.path).body
end
doc = Nokogiri::HTML.parse(res, nil, )
puts doc




MechanizeだとSocks対応してないみたいで、とりあえずNokogiri

他の方法だと、
IE → 予めSocksプロキシ設定
Firefox → SeleniumでSocksプロキシ設定
で、watirで動かす






あかん・・・・・
明日・・・明日は絵描くよ…・・・・。 
描こうとしたのにゆゆ様ごめn



---追記


Mechanizeでも動かせた







# requires socksify gem
require "mechanize"
require "socksify"
require 'socksify/http'

# Mechanize: call @agent.set_socks(addr, port) before using
# any of it's methods; it might be working in other cases,
# but I just didn't tried :)


class Mechanize::HTTP::Agent
public
def set_socks addr, port
set_http unless @http
class << @http
attr_accessor :socks_addr, :socks_port
def http_class
Net::HTTP.SOCKSProxy(socks_addr, socks_port)
end
end
@http.socks_addr = addr
@http.socks_port = port
end
end


agent = Mechanize.new
agent.agent.set_socks('127.0.0.1', 9150)
agent.get "http://www.ugtop.com/spill.shtml"
puts agent.page.body





socksifyでメソッド追加して
MechanizeにSokcsプロキシを対応させ、Torを使う


ここが agent.agent となる

agent.agent.set_socks('127.0.0.1', 9150)

class Mechanizeの定義
C:/Ruby/lib/ruby/gems/1.9.1/gems/mechanize-2.7.1/lib/mechanize.rb

class Mechanize::HTTP::Agentの定義
C:/Ruby/lib/ruby/gems/1.9.1/gems/mechanize-2.7.1/lib/mechanize/http/agent.rb



class Mechanize
def initialize
@agent = Mechanize::HTTP::Agent.new




精神効率が高くなってきた^^
   0..
Name
comment

hibana