PHP:curl登录不重定向到主域

时间:2012-10-24 11:53:45

标签: php curl

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

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

P.s:我在cookie.txt中成功存储了cookie,我可以使用该cookie来获取tumblr.com/dashboard的内容

1 个答案:

答案 0 :(得分:1)

  1. $fields使用http_build_query FFS。为什么要手动编码网址?差不多是2013年。
  2. 您需要访问主页一次。所以你可以做饭。使用相同的cookie jar和文件加载 tumblr.com/login 一次以获取cookie,然后尝试登录并创建博客。
  3. 您无需从jar中读取Cookie。如果您使用相同的Cookie jar文件,cURL会跟踪它们。所以一旦你登录,只要你使用相同的cookie文件,你就可以了。
  4. CURLOPT_SSL_VERIFYPEERCURLOPT_SSL_VERIFYHOST cURL选项设置为false 。执行此类操作时,无需验证其SSL证书。
  5. CURLOPT_CONNECTTIMEOUTCURLOPT_TIMEOUT 超时增加到30/60秒甚至更多,以防操作需要一段时间。
  6. 现在再试一次。记住,保持相同的CURLOPT_COOKIEFILECURLOPT_COOKIEJAR,如果你做对了,你会没事的。