1

我正在尝试使用 Curl 登录 Tumblr,以下 curl 帖子登录成功,但它重定向到 mydomain.com/dashboard 而不是 tumblr.com/dashboard,我如何重定向到 tumblr.com/dashboard?或者我应该使用 GET curl 到 tumblr.com/dashboard 使用 cookie 吗?

$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.txt 中成功存储了 cookie,我可以使用该 cookie 来获取 tumblr.com/dashboard 的内容吗

4

1 回答 1

1
  1. $fields使用http_build_query FFS。为什么要手动编码 URL?快到 2013 年了。
  2. 您需要访问主页一次。所以你可以得到cookie。使用相同的 cookie jar 和文件加载tumblr.com/login一次以获取您的 cookie,然后尝试登录并创建博客。
  3. 您不需要从 jar 中读取 cookie。如果您使用相同的 cookie jar 和文件,cURL 将跟踪它们。因此,一旦您登录,只要您使用相同的 cookie 文件,就可以了。
  4. cURL 选项设置为CURLOPT_SSL_VERIFYPEERfalse 。当你做这些事情时,你不需要验证他们的 SSL 证书。CURLOPT_SSL_VERIFYHOST
  5. 如果操作需要一段时间,还将您的 CURLOPT_CONNECTTIMEOUT超时CURLOPT_TIMEOUT 时间增加到 30/60 秒甚至更多。

现在再试一次。记住,保持不变CURLOPT_COOKIEFILECURLOPT_COOKIEJAR如果你做对了,你会没事的。

于 2012-10-24T13:04:39.647 回答