LoginSignup
29

More than 5 years have passed since last update.

Ruby Mechanize でスクレイピングをするときに User-Agent は必須

Last updated at Posted at 2016-01-02

概要

こんにちは。アレックスです。

この投稿では、スクレイピングをするときに見落としがちな、
User Agent(ユーザーエージェント 以下UA)について簡単に解説します。

なぜ、このような記事を書くのか?
経緯はブログに書きましたので一番最後に記載します。
良かったら、ご覧下さい :)

目次

  1. なぜ必要なのか
  2. 具体的なコード
  3. 参考文献
  4. 最後に

なぜ必要なのか

長い持論も有りますが、そちらはブログに記載いたしました。
端的に技術・機能的な面で言うと、UAを設定しなければ、
Mechanizeのデフォルトで "WWW-Mechanize/バージョン" となります。

サーバアクセス時に User-Agent リクエストヘッダで送信される文字列を返します。
user_agent= や #user_agent_alias= で設定していない場合のデフォルト値は "WWW-Mechanize/バージョン(http://rubyforge.org/projects/mechanize/)" です。

引用元:http://seesaawiki.jp/ruby_mechanize/d/Mechanize#user_agent

ロボット丸出しなので、ロボット対策をしているサイトではたくさん503返されたりします。
httpsのサイトですと、UAの指定が無いからにセキュアな接続が確立できなかったりします。

コード解説

scrap_example.rb

#! /bin/sh
#! ruby
# coding: utf-8
Encoding.default_external = 'UTF-8'
require 'rubygems'
require 'mechanize'
# require 'Mechanize' と頭文字が大文字になっている例を良く見かけるが小文字で統一したほうが良い。

agent = Mechanize.new
agent.user_agent_alias = 'Windows Mozilla'
page = agent.get('https://www.foobar.bazz/')
# Mechanizeは便利なUAのエイリアスがあるので、その中から設定が簡単です。

ua = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36"
agent.user_agent = ua
# 文字列で指定することも可能です。


文字列での指定は、個人的にはあまり使用したことありません。
エイリアスには無いブラウザも有りますので、
以下の様なサイトで確認して文字列で指定するのが良いかもしれません。
ユーザーエージェント確認

簡単ではございましたが、以上が解説です。

リンク

参考文献
楽々スクレイピング! Ruby Mechanizeの使い方
楽々スクレイピング! Ruby Mechanizeの使い方(2)
Ruby Mechanize wiki (ja)
Rubyで始めるWebスクレイピング
APT Browse - /usr/lib/ruby/vendor_ruby/mechanize.rb

経緯ブログ記事
Rubyスクレイピング – 1 User-Agent 設定が必須

最後に

最後までご覧頂き有難うございました。
今回は、アレックスが投稿いたしました。

ご指摘、ご質問、ご意見など何でもございましたら遠慮なくお願いします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29