LoginSignup
3
2

More than 5 years have passed since last update.

AWS EC2インスタンスからのスクレイピングがサイトからブロックされた話

Last updated at Posted at 2018-11-07

ruby mechanizeを用いて
AWS EC2インスタンスから某ファッションサイトにスクレイピングを実行したところ、

     9: from /usr/local/lib/ruby/2.5.0/net/http.rb:443:in `get_print'
     8: from /usr/local/lib/ruby/2.5.0/net/http.rb:485:in `get_response'
     7: from /usr/local/lib/ruby/2.5.0/net/http.rb:609:in `start'
     6: from /usr/local/lib/ruby/2.5.0/net/http.rb:909:in `start'
     5: from /usr/local/lib/ruby/2.5.0/net/http.rb:920:in `do_start'
     4: from /usr/local/lib/ruby/2.5.0/net/http.rb:935:in `connect'
     3: from /usr/local/lib/ruby/2.5.0/timeout.rb:103:in `timeout'
     2: from /usr/local/lib/ruby/2.5.0/net/http.rb:937:in `block in connect'
     1: from /usr/local/lib/ruby/2.5.0/net/http.rb:937:in `open'
/usr/local/lib/ruby/2.5.0/net/http.rb:937:in `initialize': execution expired (Net::OpenTimeout)

のようなエラーで処理が止まってしまった。これはどうやら調べてみると

の記事[4]に書いてあるように、

大規模なサイトは、クローラーによるデータ収集が出来ないようにIPアドレスによる制限をかけてくる場合があります。

IP制限がかかっていると推測される。

他の方からの話を聞くと、

  • heroku
  • ec2

でのアクセスがブロックされているのは確認できた。もしかすると他のホスティングサービスでもブロックされているかもしれないとのこと

なのでもしスクレイピングが集中しているサイトだと、こういった制限がかけられているかもしれない。

疑問なところ

疑問点が一つあり、EC2のパブリックIP(Elastic IP)を確認したところ

52.194.435.49
124.113.457.237
54.924.8425.4222

のようにかなりばらけていることが確認できた。

こんなにばらけているのなら、サイト側はどのようにして
ホスティングサービスからのアクセスなのか、他の一般ユーザーからのアクセスなのかを識別しているのだろうか、わかる方がいらっしゃったら是非教えて欲しいです。

3
2
1

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
3
2