なろうにMechanizeでログイン

Rubyでログインするサンプルスクリプト

アカウントは別のYAMLに書いてあるとする。

% cat account.yaml
email: hoge@example.com
password: mypassword

実際のスクリプトはこんな感じ。

require 'mechanize'
require 'yaml'

agent = Mechanize.new
agent.user_agent = 'Narou Browser'

params = YAML.load_file('account.yaml')
  
#agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.ca_file = 'ssl.syosetu.com.crt'
page = agent.get('https://ssl.syosetu.com/login/input/')
next_page = page.form_with do |form|
  form.id = params['email']
  form.pass = params['password']
end.submit
p next_page

事前にサイトの証明書をブラウザからエクスポートしておく。agent.ca_fileに指定しているのがそれ。