POSTの代わりにGETを送るカール
-
11-09-2019 - |
質問
実際には、私はカールが犯人であってもよく分からないほど散らかっ得ています。だから、ここでPHPがあります:
$creds = array(
'pw' => "xxxx",
'login' => "user"
);
$login_url = "https://www.example.net/login-form"; //action value in real form.
$loginpage = curl_init();
curl_setopt($loginpage, CURLOPT_HEADER, 1);
curl_setopt($loginpage, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($loginpage, CURLOPT_URL, $login_url);
curl_setopt($loginpage, CURLOPT_POST, 1);
curl_setopt($loginpage, CURLOPT_POSTFIELDS, $creds);
$response = curl_exec($loginpage);
echo $response;
私は悪い接触式」の旨のエラーを持っているログインページに続く(通常、成功したリクエストのヘッダと一致する)のヘッダー、(私はリダイレクトによるカール撮影し、これを推測している)を取得します」ます。
リクエストがGETとして、投稿しない送信されることを、私はこの問題は、要求が要求サーバーではなく、リモートサーバーに設定されたホストを持っていたことだと思ったが、その後、私は(Firebugの中で)気づいています。
私は、ログインサイトのフォームをコピーする場合は、、値を持つだけでフォーム要素にそれを取り除く、そしてアクションのための完全なURLを入れて、それだけで素晴らしい作品。だから私は、これがログイン要求が同じサーバ上で発信しているセキュリティ上の問題など(私も空の隠された値を取り除くと他のクッキーのいくつかを設定するJSの全てを取得)ではないと思うだろう。
その後、再び、私はかなり迅速に混乱ます。
任意のアイデアなぜGET、またはなぜそれがそのことについては、働いていないとして表示だ?
解決
、あなたは、単にCURLOPT_VERBOSEをオンにし、CURLOPT_STDERRにファイルハンドルを与える必要があります。
、あなたのファイルをtail -f
あなたはFirebugの中で見たものにヘッダとレスポンスを比較し、問題が明らかになるはずです。
他のヒント
要求がサーバから構成され、Firebugのには表示されません。 (あなたはおそらく、あなたのブラウザで別の要求とそれを混同しました)。本当に何が起こるかを調べるために wiresharkのを使用してください。あなたはCURLOPT_FOLLOWLOCATION
を設定されていません。リダイレクトを行ってはなりません。
要約:続きを投稿し、少ないと思います。 PCAPダンプへのリンク、そして私たちは、あなたが間違ってやっている正確に何を伝えることができるようになります。またはPHPスクリプトの正確な出力を掲示し、我々は可能性があります。
示されているコードは、おそらくターゲットサーバーが期待するものではありませんこれは、マルチパートformpostを行います。
ヘッダデータは、それがとして返送されたものを参照してください、最後にprint_r(curl_getinfo($loginpage))
に投げてみます。
また、あなたが自分のサイトから、あなたが行くのあなたのロギングは、あなたがそれを送信したとき、彼らはあなたがウェブサイト上にあった「考える」ように、あなたは、あなたのポストで正しいリファラの送信を確認するためにことを偽にしようとした場合。