Php 使用Curl登录meetup.com
我正在尝试自动登录www.meetup.com,但没有成功:- 这是我的代码:-Php 使用Curl登录meetup.com,php,curl,Php,Curl,我正在尝试自动登录www.meetup.com,但没有成功:- 这是我的代码:- <? $username="my@email.com"; $password="123abc"; $url="http://meetup.com"; $cookie="cookie.txt"; $postdata = "email=". $username ."&password=". $password . "&submitButton=Login"; $ch = curl_i
<?
$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;
?>
没有快乐-有什么想法吗
谢谢
Jonathan他们可能会在第一次页面加载时给你一个会话cookie 尝试使用CURLOPT_COOKIEJAR发出请求,然后使用CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR发出登录请求 此外,这是我用来让请求看起来更干净的函数
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;
}
使用示例
$options = array(
CURLOPT_RETURNTRANSFER => TRUE
);
curl_http_request($url, $options);
这应该行得通
// 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;
}
希望这个有用:)请使用
$url=https://secure.meetup.com
并替换行curl\u setopt($ch,CURLOPT\u REFERER,”http://www.meetup.com/");代码>通过curl\u setopt($ch,CURLOPT\u REFERER,”)代码>
所以它会起作用…谢谢Chad,我试着(至少我认为我做得对)添加了你建议的行,但没有乐趣。如果您能在www.meetup.com上亲自尝试一下,并让我知道您是否能让它发挥作用,我将不胜感激。非常感谢!上述方法对我很有效,就像我说的,他们使用会话。因此,要成功登录,您需要使用CURLOPT_COOKIEJAR文件集发出一个虚拟页面请求,以使站点提供会话cookie。然后实际发布登录信息。:)嗨,查德-太棒了!这在一个小问题上起了作用。当我尝试导航到另一个页面时,它会丢失登录名。有没有办法保持登录状态?例如,我从http/mydomain.com/testlogin.php运行脚本,该脚本成功并显示meetup页面,但如果我单击链接,它将转到但我没有登录。有什么想法吗?我真的很感谢你的帮助!