1

Curl を使用して Tumblr にログインしようとしていますが、以下の curl で正常にログインできますが、tumblr.com/dashboard ではなく mydomain.com/dashboard にリダイレクトされます。tumblr.com/dashboard にリダイレクトするにはどうすればよいですか? または、Cookie を使用して tumblr.com/dashboard に GET curl を使用する必要がありますか?

$url = 'https://www.tumblr.com/login';
$fields = array(
            'user[email]'=> $email,
            'user[password]'=>$pass,
            'tumblelog[name]'=> '',
            'user[age]'=> '',
            'recaptcha_public_key'=> urlencode($key),
            'recaptcha_response_field'=> '',
            'hk'=> urlencode($hk[1]), 
           'http_referer' => 'https%3A%2F%2Fwww.tumblr.com%2Flogin'
        );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch,CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch,CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
var_dump($result);

Ps : Cookie が cookie.txt に正常に保存されました。その Cookie を使用して、tumblr.com/dashboard のコンテンツを取得できますか?

4

1 に答える 1

1
  1. http_build_query FFS$fieldsを使用しますURL を手動でエンコードする理由 もうすぐ2013年です。
  2. メインページに一度アクセスする必要があります。だからあなたはクッキーを得ることができます。同じ Cookie jar とファイルを使用してtumblr.com/loginを 1 回読み込み、Cookie を取得してから、ログインしてブログを作成してみてください。
  3. jar から Cookie を読み取る必要はありません。同じ Cookie jar とファイルを使用する場合、cURL はそれらを追跡します。一度ログインしたら、同じ Cookie ファイルを使用している限り、問題ありません。
  4. cURL オプションを false に設定CURLOPT_SSL_VERIFYPEERします。そのようなことを行う場合、SSL 証明書を検証する必要はありません。CURLOPT_SSL_VERIFYHOST
  5. また、操作に時間がかかる場合に備えて、タイムアウトを 30/60 秒またはそれ以上に増やします。 CURLOPT_CONNECTTIMEOUTCURLOPT_TIMEOUT

もう一度やり直してください。覚えておいてください、同じことを続けてCURLOPT_COOKIEFILEくださいCURLOPT_COOKIEJAR。正しく行えば大丈夫です。

于 2012-10-24T13:04:39.647 に答える