首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用卷曲登录到meetup.com

使用卷曲登录到meetup.com
EN

Stack Overflow用户
提问于 2009-05-09 01:59:59
回答 2查看 1.3K关注 0票数 3

我正在尝试自动登录到www.meetup.com,但没有太多成功:

这是我的代码:

代码语言:javascript
复制
      <?
$username="my@email.com";
$password="123abc";
$url="http://meetup.com";
$cookie="cookie.txt";

$postdata = "email=". $username ."&password=". $password . "&submitButton=Login";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "/login");

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, "http://www.meetup.com/");

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;

exit;
?> 

没有快乐--有什么想法吗?

谢谢

乔纳森

EN

回答 2

Stack Overflow用户

发布于 2009-05-09 02:05:17

他们可能会在第一次页面加载时向您传递会话cookie

尝试使用CURLOPT_COOKIEJAR发出请求,然后使用CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR发出登录请求

更糟糕的是,这是我做的一个让请求看起来更干净的函数

代码语言:javascript
复制
function curl_http_request ($url, $options)
{
    $handle = curl_init($url);
    curl_setopt_array($handle, $options);
    ob_start();
    $buffer = curl_exec($handle);
    ob_end_clean();
    curl_close($handle);
    return $buffer;
}

使用示例

代码语言:javascript
复制
$options = array(
    CURLOPT_RETURNTRANSFER => TRUE
);

curl_http_request($url, $options);

这应该是可行的

代码语言:javascript
复制
// set global curl options
$curloptions = array(
        CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6',
        CURLOPT_TIMEOUT => 60,
        CURLOPT_COOKIEJAR => $cookie,
        CURLOPT_COOKIEFILE => $cookie,
        CURLOPT_REFERER => 'http://www.meetup.com/'
);

// set userinfo
$username = 'bobsmit@gmail.com';
$password = 'bobsmit@gmail.com';
$cookie = 'cookie.txt';

// clear cookie.txt (fresh session)
$handle = fopen($cookie, 'w');
fclose($handle);

// make a dummy request to generate a session
curl_http_request('http://www.meetup.com/login/', $curloptions);

// login
curl_http_request('http://www.meetup.com/login/', 
    array(
        CURLOPT_POSTFIELDS => 'email=' . urlencode($username) . '&password=' . urlencode($password) . '&rememberme=on&submitButton=Login&returnUri=http%3A%2F%2Fwww.meetup.com%2F&op=login',
        CURLOPT_POST => TRUE
    ), $curloptions
);

//example request
echo curl_http_request('http://www.meetup.com/account/', 
    array(
        CURLOPT_FOLLOWLOCATION => TRUE,
        CURLOPT_RETURNTRANSFER => TRUE
    ), $curloptions
);

function curl_http_request ($url, $moreoptions = array(), $options = array())
{
    foreach ($moreoptions as $k => $v) $options[$k] = $v;
  $handle = curl_init($url);
  curl_setopt_array($handle, $options);
  ob_start();
  $buffer = curl_exec($handle);
  ob_end_clean();
  curl_close($handle);
  return $buffer;
}

希望这个方法能起作用:)

票数 3
EN

Stack Overflow用户

发布于 2011-10-20 03:33:08

请使用$url=https://secure.meetup.com并将行curl_setopt ($ch, CURLOPT_REFERER, "http://www.meetup.com/");替换为curl_setopt ($ch, CURLOPT_REFERER, "");

所以它会起作用..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/842498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档