質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

6401閲覧

メルカリのスクレイピングで403 forbiddenエラーが発生する原因を解決したい【ローカルはok、本番環境でエラーが発生】

akii

総合スコア13

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

2クリップ

投稿2019/03/07 01:56

発生している問題

クローラーのプログラム自体は出来ていて、ローカルでは動くのですが本番環境になると「403 forbidden エラー」が発生してしまいます。

ユーザーエージェントの指定やheaderの指定などをしたり、seleniumでクローラーを作り直して実行したりもしましたが、何を試しても403エラーが発生しています。

該当のソースコード

一部、抜粋したプログラムです

これをrails taskで実行しています。

namespace :mercari_bot do task :iphone => :environment do agent = Mechanize.new agent.user_agent = "Mozilla/5.0" agent.request_headers = { "Accept-Encoding" => "deflate", "content-type"=>"text/html;charset=UTF-8" } page = agent.get("https://www.mercari.com/jp/search/?keyword=iphone") elements = page.search(".items-box") elements.each do |element| puts element.at("h3.items-box-name").text end end end

もしくは、手早くエラーを再現する方法として、ローカルでheaderを指定せずにcurlで上記のメルカリのurlを叩くと同じ現象が発生します。

エラーが発生していると思われる原因

メルカリで使われている、varnish serverというのが原因だと思います。
ただ、ローカルでは問題なく動くのに本番だとcurlを含め何をしても403エラーが発生するので、行き詰まってます。

お手数お掛けするのですが、何かこの問題の解決方法がわかる方がいましたら、知見を共有していただければと思います。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「本番」とはどこの環境でしょう?
AWSですと403になる可能性があると思います。

投稿2019/03/07 02:01

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akii

2019/03/07 02:05

回答ありがとうございます AWS(EC2) GCP(GAE) heroku の3つで試しましたが、全部ダメでした
退会済みユーザー

退会済みユーザー

2019/03/07 02:08 編集

GCPとHerokuは実際に試したことがないのでわからないのですが、AWSからのアクセスは知る限りではおっしゃる通り403になります。 場所を変えるかプロキシを挟むかなどで回避するしかないと思います。
39ff

2019/03/07 02:58

主要なクラウド/VPSプロバイダはメルカリは全IPブロックしています
akii

2019/03/07 04:49

なるほど ありがとうございます 別の方法で試してみたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問