Socksify の Net::HTTP アダプターで HTTP ページを取得する
Socksify の Net::HTTP アダプターを使い、URL のリクエスト対象を保ったまま、返されたレスポンス本文を読み取ります。
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 の組み合わせを確認してください。