高木のブログ

【Ruby】open-uri でのユーザーエージェントを変更する

2022/05/09

open-uri を使ってアクセスする時にユーザーエージェントを偽装したい時がある

やり方

ハッシュ引数で指定できる

require 'open-uri'

URI.open('http://localhost:4567', 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36').read
#=> "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"

デフォルトは Ruby らしい

URI.open('http://localhost:4567').read
#=> "Ruby"

補足

実行環境

$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]

ユーザーエージェントを返すAPI

Sinatra で作った

app.rb
require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'sinatra'
  gem 'puma'
end

get '/' do
  request.user_agent
end

Sinatra::Application.run!
$ ruby app.rb
$ curl localhost:4567
curl/7.29.0

ytkg

Written by ytkg, Twitter, GitHub