3

私は何百ものウェブページにインデックスを付けようとしています。

要するに

  1. CRONジョブを使用してPHPスクリプトを呼び出す
  2. 最近更新されていないURLの一部(約15個のみ)を取得する
  3. CURLを使用してこれらのURLをクエリする

問題

開発では、すべてがうまくいきました。しかし、いくつかのテストページよりもはるかに多くのインデックスを作成し始めたとき、CURLはいくつかの実行後に機能することを拒否しました。リモートサーバーからデータを取得することはありません。

エラーメッセージ

CURLが出力したこれらのエラー(もちろん一度にではありません)

  1. ホストに接続できませんでした
  2. 60000ミリ秒後に操作がタイムアウトし、0バイトを受信しました

V-Serverで作業していて、Firefoxまたはwgetを使用してリモートサーバーに接続しようとしました。また、何もありません。しかし、ローカルマシンからそのリモートサーバーに接続すると、すべてが正常に機能します。

数時間待って、それは再びいくつかの実行のために働きます。

私にとっては、リモートサーバーやDDOS保護などの問題のように思えますが、皆さんはどう思いますか?

4

2 に答える 2

1

スクリプトはどのくらいの頻度で実行されますか?それは実際にDOSのような保護をトリガーしている可能性があります。ランダムな遅延を実装して、リクエストがより「自然」に見えるようにするために、リクエストが少し遅れているように見せることをお勧めします

于 2012-05-08T11:35:48.540 に答える
1

DDOS保護または同様の設定によって、サイトによってIPがブロックされる可能性があるため、送信するリクエストが多すぎる場合は、プロキシを使用する必要があります。

ここに注意すべきことがあります:(私がウェブサイトのデータをスクレイピングするために使用したもの)

1.プロキシを使用します。

2.ランダムユーザーエージェントを使用する

3.ランダムリファラー

4.cronのランダム遅延。

5.要求間のランダムな遅延。

私がすることは、スクリプトを永久に実行させ、その間にスリープを追加することです。

ignore_user_abort(1);
set_time_limit(0);

URLに1秒間アクセスしてトリガーするだけで、永久に実行されます。

于 2012-05-09T07:18:41.377 に答える