4 Stimmen

curl gibt 403 Fehler?

Ich versuche, ein Cookie für meine phpBB-Foren von einer MediaWiki-Login-Seite aus zu setzen. Mit dem Haken, nachdem ein Login in das Wiki erfolgreich ist, möchte ich ein PHP-Skript ausführen, das das Cookie setzt.

Das Skript funktioniert, wenn ich es unabhängig ausführe oder wenn ich GET verwende, aber aus Sicherheitsgründen möchte ich das Skript POSTen. Dazu habe ich mir überlegt curl wäre die beste Option.

Leider ist auch das grundlegende Skript wie dieses:

curl_setopt($ch, CURLOPT_URL, "http://www.example.com/ForumLogin.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

Ich erhalte einen 403 Forbidden-Fehler. Es gibt keine Regeln in robots.txt, die dazwischenfunken sollten. Was könnte ich sonst noch versuchen, damit das Skript funktioniert, oder gibt es andere Möglichkeiten, das Skript von MediaWiki aus auszuführen?

6voto

coderama Punkte 14867

Für mein spezielles Projekt würde der Server einen 403-Fehler ausgeben, wenn ein Fehler auftritt, aber dennoch Daten zurückgeben. Um das Problem zu umgehen, habe ich dies getan:

curl_setopt($ch, CURLOPT_FAILONERROR, 0); // Fail on errors

Wenn Sie die Fehlermeldung deaktivieren, erhalten Sie vielleicht noch einige Daten zurück. Ich hoffe, das hilft.

5voto

Rushyo Punkte 7257

Ich vermute, dass dies ausdrücklich damit begründet wird, automatisiertes Verhalten zu verhindern - eine Anti-Bot- oder allgemeine Sicherheitsmaßnahme. Vielleicht möchten Sie sich den Quellcode der Zielseite ansehen und nach solchen Maßnahmen suchen - eine schnelle Suche im Code nach "403" könnte Aufschluss geben. Es kann sogar sein, dass POST-Anfragen in diesem Zusammenhang nicht legitim sind - und daher aus Sicherheitsgründen verhindert werden.

Ich bin mir übrigens nicht sicher, was Sie mit "aus Sicherheitsgründen" meinen. POST ist nicht sicherer als GET. Sie sind beide genauso anfällig für Überprüfungen.

4voto

Jp_ Punkte 5341

Meine Lösung für dieses Problem war, die Option User Agent zu setzen, so dass cURL sich als Browser ausgeben kann. Ein Beispiel für diese Einstellung in php ist

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6');

Referenzen:

3voto

Hassan Saeed Punkte 4644

Um wie ein echter Benutzer zu handeln/anzufordern, versuchen Sie "curl/7.39.0" als Benutzeragent

$useragent= "curl/7.39.0";
curl_setopt($ch,CURLOPT_USERAGENT, $useragent);

oder versuchen Sie Randam User Agents aus der Array-Liste des Browsers wie

//browser pack start
         $useragents=array(
      "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
      "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4",
      "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
      "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
      "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
      "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
      "Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5",
      "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
      "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true",
      "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.0.141.16-Gen4_11004310) AppleWebkit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true",
      "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Nexus S Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
      "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
      "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
      "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
      "Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
      "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SAMSUNG-SGH-I717 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
      "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
      "Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
      "Mozilla/5.0 (Linux; Android 4.2.2; GT-I9505 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36",
      "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",

         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36");
            //browser pack end
  $useragent=$useragents[rand()%sizeof($useragents)];
     curl_setopt($ch,CURLOPT_USERAGENT, $useragent);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X