3

MediaWiki ログイン ページから phpBB フォーラムの Cookie を設定しようとしています。wiki へのログインが成功した後にフックを使用して、Cookie を設定する php スクリプトを実行したいと考えています。

スクリプトは、独立して実行するとき、または GET を使用するときに機能しますが、セキュリティ上の理由から、スクリプトに POST したいと考えています。このため、私curlは最良の選択肢になると考えました。

残念ながら、このような基本的なスクリプトでさえ:

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

403 Forbidden エラーが表示されます。robots.txt には干渉すべきルールはありません。スクリプトを機能させるために他に何ができるでしょうか? または、MediaWiki 内からスクリプトを実行できる他の方法はありますか?

4

4 に答える 4

6

私の特定のプロジェクトでは、エラーが発生した場合、サーバーは 403 エラーをスローしますが、それでもデータを返します。この問題を回避するために、私はこれを行いました:

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

フェイル オン エラーを無効にしても、一部のデータが返される可能性があります。それが役立つことを願っています。

于 2012-11-28T12:39:54.477 に答える
5

これの正当な理由は、自動化された動作を明示的に停止することであると思います-ボット対策または一般的なセキュリティ対策. 宛先サイトのソース コードを調べて、そのような手段がないか確認することをお勧めします。「403」のコードをすばやく検索すると、何らかの洞察が得られる場合があります。POST リクエストがそのコンテキストでは正当ではない場合もあり、セキュリティ上の理由で防止されます。

ちなみに、「セキュリティ上の理由から」の意味がわかりません。POST は GET より安全ではありません。どちらも同じように精査されます。

于 2010-09-17T13:06:23.503 に答える
3

これに対する私の解決策は、User Agent オプションを設定することでした。これにより、cURL は browser のふりをすることができます。php でのこの設定の例は次のとおりです。

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

参考文献:

于 2014-09-01T10:34:17.870 に答える