0

cURL を使用して Yammer にログインしようとしています。何らかの理由で、サイトにパスワードを受け入れさせることができません。この URL https://www.yammer.com/login?login=username%40domain.com&password=passwordにアクセスして試すことができます。私が間違っていることはありますか?ユーザー名(ログイン)は正常に表示されますが、パスワードは表示されません..

編集:

これが私のコードです

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_URL,"https://www.yammer.com/login");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=" . urlencode("user@domain.com") .   "&password=" . urlencode("password"));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64)      AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

ob_start();
curl_exec ($ch);
ob_end_clean();

curl_close ($ch);
unset($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie.txt");
curl_setopt($ch, CURLOPT_URL,"https://www.yammer.com/");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64)     AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);

$buf2 = curl_exec ($ch);

curl_close ($ch);

echo $buf2;
?>
4

1 に答える 1

1

Yammer ログイン ページのソースを確認しました。

<form action="/session" id="login-form" method="post">
  <fieldset>
      <input class="initial-focus" id="login" name="login" tabindex="1" type="text" />
      <input id="password" name="password" tabindex="2" type="password" />
  </fieldset>

</form>

ご覧のとおり、ログイン フォームのメソッドは「post」に設定されています。質問で提供した URL は、HTTP GET 要求を行います。ログイン時にブラウザをシミュレートするには、代わりに POST リクエストを作成するように Curl に指示する必要があります。

動作するはずのいくつかのオプションについては、この質問を参照してください。Curl のマニュアル ページも役立つ場合があります。

編集:追加情報を提供していただきありがとうございます。ページのソースをもう一度見て、問題の原因を突き止めました。フォームに別の入力があります。

<input name="authenticity_token" type="hidden" value="YqY07+XHzPIoY9PBLhYIQy3uQstSCJqC79Vn5Ot/njw=" />

最初に別の Curl リクエストを作成してそのフィールドの値を取得し、それを送信する投稿フィールドに追加する必要があるようです。

于 2011-08-07T21:37:04.877 に答える