Socksify は Net::HTTP 用のアダプターを提供します。そのアダプターを読み込み、文書化されている socks_proxy メソッドを使います。

require 'socksify/http'

uri = URI('http://example.com/?view=compact')
Net::HTTP.socks_proxy('127.0.0.1', 1400)
         .start(uri.host, uri.port) do |http|
  response = http.get(uri.request_uri)
  puts response.body
end

ローカルポートは SOCKS エンドポイントの一例です。認証のない SOCKS サービス経由で公開サイトを許可された範囲で試す場合、SOCKS プロキシ一覧にある互換性のある候補がそのホストとポートを置き換えられます。インストール済みのアダプターが対応するプロトコルに合わせてください。request_uri はパスとクエリを保持し、URL に明示的なパスがない場合はスラッシュを補います。レスポンスオブジェクトの検査出力を表示することは、その本文を読むこととは別です。

ブロック形式はブロックの終了時に HTTP セッションを閉じます。この例は HTTP の宛先向けです。HTTPS クライアントには通常の TLS 設定も必要です。

古いスニペットではファクトリーを SOCKSProxy と記述しています。プロジェクトの現在の実装はそれを別名として残しており、README では socks_proxy を使っています。アダプターは Net::HTTP の内部と統合されるため、インストール済みの Socksify と Ruby の組み合わせを確認してください。

関連記事