web-dev-qa-db-ja.com

ブラウザベースのクライアント側スクレイピング

ユーザーのIPを介して外部(クロスドメイン)ページをこするのは可能ですか?

ショッピング比較サイトの場合、e-comサイトのページをスクレイピングする必要がありますが、サーバーからのいくつかのリクエストが禁止されるので、クライアント側のスクレイピングを行う方法を探しています。つまり、ユーザーのサイトからのリクエストページです。 IPとサーバーに送信して処理します。

17
eozzy

いいえ、 Same-Originポリシー と呼ばれるセキュリティ対策のため、JavaScriptを使用して他のWebサイトからコンテンツをスクレイピングするためにクライアントのブラウザーを使用することはできません。

このポリシーを回避する方法はないはずです。それはもっともな理由です。あなたがあなたの訪問者のブラウザにどんなウェブサイトでも何かをするように命令することができると想像してください。それはあなたが自動的に起こりたいことではありません。

ただし、そのためのブラウザー拡張機能を作成することもできます。 JavaScriptブラウザー拡張機能には、通常のJavaScriptよりも多くの特権を装備できます。

Adobe Flashにも同様のセキュリティ機能がありますが、Java(JavaScriptではありません)を使用して、ユーザーのIPアドレスを使用するWebスクレイパーを作成できます。その場合も、おそらくやりたくないでしょう。 Javaプラグインは安全ではない(そしてロードが遅い!)と見なされており、すべてのユーザーがプラグインをインストールしているわけではありません。

さて、あなたの問題に戻りましょう:

E-comサイトのページをこすり落とす必要がありますが、サーバーからのいくつかの要求で私は禁止されます。

そのWebサイトの所有者が彼のサービスをそのように使用することを望まない場合は、おそらくそれを行うべきではありません。そうしないと、法的影響を受ける危険があります(詳細は ここ を参照)。

あなたが「法律の暗い面」にいて、それが違法かどうかを気にしない場合は、 http://luminati.io/ のようなものを使用して、実際の人々のIPアドレスを使用できます。 。

30
Johann Bauer

基本的にブラウザはこれを回避するように作られています…

誰もが最初に考えるソリューション:

jQuery/JavaScript:iframeのコンテンツへのアクセス

ただし、「最近」のブラウザ(10年未満)ではほとんどの場合機能しません。

代替案は次のとおりです。

  • サーバーの公式APIを使用する(ある場合)
  • サーバーがJSONPサービスを提供しているかどうかを調べてみてください(幸運)
  • 同じドメインにいる場合は、クロスサイトスクリプティングを試してください(可能であれば、それほど倫理的ではありません)
  • 信頼できるリレーまたはプロキシを使用する(ただし、これは引き続き独自のIPを使用します)
  • あなたがグーグルウェブクローラーであるかのように振る舞う(そうではないが、非常に信頼性が低く、保証もない)
  • ハックを使用して、クライアント自体にリレー/プロキシをセットアップしますJavaまたはおそらくフラッシュです。(ほとんどのモバイルデバイスでは動作せず、フラッシュには独自のクロスサイトがあります。制限も)
  • Googleまたは別の検索エンジンにコンテンツの入手を依頼します(悪用​​すると、検索エンジンに問題が発生する可能性があります…)。
  • 自分でこの仕事をして答えをキャッシュしてください。これは、サーバーをアンロードし、禁止されるリスクを減らすためです。
  • 自分でサイトにインデックスを作成し(独自のWebクローラー)、独自のインデックス付きWebサイトを使用します。 (ソースの変更頻度によって異なります) http://www.quora.com/How-can-I-build-a-web-crawler-from-scratch

[編集]

私が考えることができるもう1つの解決策は、 [〜#〜] yql [〜#〜] サービスを使用することです。この方法では、検索エンジン/パブリックプロキシを情報を取得するためのブリッジ。 これを行う簡単な例を示します要するに、クロスドメインのGETリクエストを取得します

3
Flavien Volken

http://import.io をご覧ください。クローラー、コネクター、エクストラクターがいくつか提供されています。私は彼らがどのようにして禁止を回避するのかよくわかりませんが、彼らは何とかします(私たちは問題なく1年以上システムを使用しています)。

2
Jan

あなたはartooでブラウザ拡張を構築することができます。

http://medialab.github.io/artoo/chrome/

これにより、同じ元のポリシーの制限を回避できます。すべてJavaScriptで、クライアント側にあります。

1
user2816491