wake-up-neo.com

PHP cURL, wie der Benutzeragentenwert hinzugefügt wird OR überwinden die Server, die cURL-Anfragen blockieren?

Ich transferiere ein Object Array. Ich habe einen cURL - Client (Übermittler) auf einem eigenen Server und Listening - Skript auf einem anderen Server , das nicht unter meiner Kontrolle steht. Dann denke ich, sie blockieren die eingehenden cURL-Anfragen , weil, wenn ich mit dem normalen HTML <form> teste, es funktioniert. Über cURL trotzdem nicht.

Ich denke, sie haben eine gewisse Einschränkung für cURL gemacht.

Dann sind meine Fragen hier:

  1. Kann ein Server die eingehenden cURL-Anforderungen einschränken/blockieren?
  2. Wenn ja, kann ich den HTTP-Header (User Agent) in meinem einleitenden cURL-Skript täuschen/ändern?
  3. Oder gibt es noch andere mögliche Geschichten?

Vielen Dank!

13
夏期劇場
  1. Auf der Server-Seite können wir einige Anfragen blockieren, indem Sie die Header-Felder (einschließlich refer, cookie, user-agent usw.) in der http-Anfrage, die IP-Adresse und die Zugriffshäufigkeit erkennen. In den meisten Fällen haben Anforderungen, die von Maschinen generiert werden, normalerweise etwas anderes als menschliche Anfragen, z. B. kein Verweisen und Cookie, oder bei einer höheren Zugriffsfrequenz können wir einige Regeln schreiben, um diese Anforderungen abzulehnen.

  2. Laut Nummer 1 können Sie versuchen, echte Anforderungen zu simulieren, indem Sie die Header-Felder ausfüllen, die Zufallsfrequenz und die langsamere Häufigkeit verwenden und mehr IP-Adressen verwenden. (klingt nach Angriff)

  3. Verwenden Sie in der Regel eine niedrigere Frequenz und belasten Sie ihren Server nicht, folgen Sie den Zugriffsregeln. Sie blockieren Ihre Anfragen selten. 

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

Wenn Sie immer noch mit dem Problem konfrontiert sind, gehen Sie wie folgt vor.

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']);

HINWEIS: Sie benötigen einen COOKIES-Ordner im Verzeichnis.

3.

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

Wenn Sie das Problem dadurch nicht lösen, geben Sie die Beispieleingabe/-ausgabe/Fehler/etc ..__ an, um eine genauere Lösung zu erhalten.

20
Black0CodeR

Der Server kann nicht nur cURL-Anforderungen blockieren, da es sich nur um HTTP-Anforderungen handelt. Wenn Sie also den User Agent Ihrer cURL ändern, können Sie Ihr Problem lösen, da der Server der Meinung ist, dass Sie über einen Browser in UA eine Verbindung herstellen.

0
AxelPAL