web-dev-qa-db-ja.com

PHP cURLユーザーエージェント値を追加する方法OR cURLリクエストをブロックするサーバーを克服しますか?

オブジェクト配列を転送しています。 自分のサーバーのcURLクライアント(送信者)他のサーバーのリスニングスクリプトがありますが、これらは私の制御下にはありません。そして、私はそこにあると思う、彼らは着信cURLリクエストをブロックしている、なぜなら私が通常のHTML _<form>_でテストするとき、それが働いているからだ。とにかくcURL経由ではありません。

だから私は彼らがcURLに何らかの制限を加えたと思う。

それから私の質問はここにあります:

  1. サーバーは、cURLの着信要求を制限/ブロックできますか?
  2. その場合、開始するcURLスクリプトでHTTPヘッダー(ユーザーエージェント)をだまして変更できますか?
  3. または、他に考えられるストーリーはありますか?

ありがとう!

15
夏期劇場
  1. サーバー側では、httpリクエストのヘッダーフィールド(refer、cookie、user-agentなどを含む)、IPアドレス、アクセス頻度を認識することで、一部のリクエストをブロックできます。ほとんどの場合、マシンによって生成されたリクエストには通常、人間のリクエストとは異なるものがあります。たとえば、参照とCookieがない、またはアクセス頻度が高い場合、これらのリクエストを拒否するルールを作成できます。

  2. 1によれば、より多くのIPアドレスを使用して、ランダムで遅い頻度でヘッダーフィールドを埋めることにより、実際のリクエストをシミュレートするために最善を尽くすことができます。 (攻撃のような音)

  3. 一般に、使用頻度を低くし、サーバーに大きな負荷をかけず、アクセスルールに従うと、リクエストがブロックされることはほとんどありません。

5
TroyCheng

それでも問題が解決しない場合は、次を実行します。

1。

$config['useragent'] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';

curl_setopt($curl, CURLOPT_USERAGENT, $config['useragent']);
curl_setopt($curl, CURLOPT_REFERER, 'https://www.domain.com/');

2。

$dir                   = dirname(__FILE__);
$config['cookie_file'] = $dir . '/cookies/' . md5($_SERVER['REMOTE_ADDR']) . '.txt';

curl_setopt($curl, CURLOPT_COOKIEFILE, $config['cookie_file']);
curl_setopt($curl, CURLOPT_COOKIEJAR, $config['cookie_file']);

注:ディレクトリにCOOKIESフォルダーが必要です。

3。

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

これらを実行しても問題が解決しない場合は、サンプルの入力/出力/エラーなどを提供します。そのため、より正確なソリューションを提供できます。

23
Black0CodeR
  $agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)';
  $curl=curl_init();
  curl_setopt($curl, CURLOPT_USERAGENT, $agent);
20
srain

サーバーはcURLリクエストのみをブロックすることはできません。それらはHTTPリクエストであるためです。サーバーがUAに表示されているブラウザーを介して接続していると考えるため、cURLのユーザーエージェントを変更すると問題を解決できます。

0
AxelPAL