jsbrs125
@jsbrs125 (な は)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Chrome拡張機能のbackgroundでスクレイピングしたい

解決したいこと

メルカリの商品一覧のページで、発送までの日数と更新?出品?が何分前かを表示させたいです。

発生している問題・エラー

https://qiita.com/doran/items/c2d3249c53b97ddeed0d
を参考にしたところ、

ajax Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

というエラーが出て、
https://qiita.com/mtoutside/items/cee708841cad7e02f85c
を参考に

  status.set({ 'Access-Control-Allow-Origin': '*' }); // ここでヘッダーにアクセス許可の情報を追加

を入れましたが、変わらずでした。
javascript自体初めてのため、これ以上調べても私には解決方法が見つけられませんでした。

該当するソースコード

menu.html
<!DOCTYPE HTML>
<html lang="ja">
  <head>
    <meta charset="utf-8" />
    <title>ページへアクセステスト</title>
    <script src="js/jquery-3.5.1.min.js"></script>
    <script src="js/menu.js"></script>
  </head>
  <body>
    <div id="title" style="width: 100%;"></div>
    <div id="view" style="width: 100%;"></div>
  </body>
</html>
manifest.json
{
  "name": "ページへアクセステスト",
  "version": "1.00",
  "description": "ページへアクセステスト",
  "host_permissions": ["https://qiita.com/doran/items/*"],
  "permissions": [],
  "background": {
    "service_worker": "js/background.js"
  },
  "manifest_version": 3
}
js/background.js
chrome.action.onClicked.addListener(function(){
  chrome.tabs.create({"url": "menu.html"});
});
js/menu.js
$(function(){
  $.ajax({
    url: "https://jp.mercari.com/item/m********",
    type: "GET",
    contentType: "application/json",
    success: function(ret, status, xhr){
      var form = $(ret);
      $("#title").text(form.find(".body__32cba457>span").text());
      $("#view").text(form.find(".body__5616e150 secondary__5616e150").text());
    },
    error: function(XMLHttpRequest, status, errorThrown) {
      console.log(errorThrown);
    }
  });
});

自分で試したこと

Geminiに聞いてみたところ、background.jsとcontent.jsで行えるような回答がありましたが、どんどん話がそれて訳が分からなくなってしまいました。
私の知識不足でこれ以上の検索は難しいため、お助けいただきたいです。

0

1Answer

スクレイピングは、サイトの管理者に許可を得ているとか、規約に従って専用の API にアクセスしているとかでなければ、迷惑行為になるかもしれないということは認識してますか?

メルカリについては「メルカリ スクレイピング禁止」をキーワードにググってみてください。

クローラーを作って某図書館サイトにアクセスしたら業務妨害とかで逮捕された事例もありますので、甘く見ない方がいいと思います。

逮捕までいかなくても、被害が深刻な場合は損害賠償の訴訟を受けるかもしれません。

訴訟までいかなくても、アクセス遮断なら Web サーバーの設定で管理者だけの判断で容易に可能なので、多分に可能性はあると思います。帯域ごと遮断され、あなたのやったことで多数の利用者が巻き添えを喰らうことになるかもしれません。

0Like

Comments

  1. @jsbrs125

    Questioner

    ありがとうございます。
    メルカリをスクレイピングする拡張機能がたくさんあるので、禁止されているとは想像もしていませんでした。
    既に公開している方々は、十分に規約違反しているので、私がやったことで多数の利用者が巻き添えを喰らうとしても、原因は自分が規約を違反していたことなので、人のせいにして巻き添えだと解釈するような方々の味方はできません。申し訳ございません。

  2. みんなやってるから自分もやると言ってますか?

  3. @jsbrs125

    Questioner

    やるなんてどこで判断したのでしょうか?私はしませんよ?
    誰かがやって、巻き添えをくらえばいいのにとは思ってますが(笑)

  4. 私がやったことで多数の利用者が巻き添えを喰らうとしても、

    から「やる」と読めました。

  5. @jsbrs125

    Questioner

    たらればを事実とするタイプなのですね。理解しました。
    捕まらないようにお気を付けください。

  6. SurferOnWwwさんの言う「多数の利用者」はスクレイピングしている人ではなく、あなたと同じプロバイダを使っていたり近所に住んでいたりする普通のメルカリ利用者のことですよ。

    帯域ごと遮断され、

    というのはそういうことです。

  7. @jsbrs125

    Questioner

    ありがとうございます!その突っ込みをしてくれなくて察したので、代わりにしてくれて助かりましたw

Your answer might help someone💌