Я пытаюсь автоматически войти на сайт 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_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; ?>
Никакой радости – никаких идей?
благодаря
Джонатан
они могут передать вам сеансовый файл 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_setopt ($ch, CURLOPT_REFERER, "http://www.meetup.com/");
curl_setopt ($ch, CURLOPT_REFERER, "");
Так что это сработает …