curl авторизация для instant

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

не могу написать

#1 2 декабря 2011 в 21:34
Помогите кто может, правильно написать заспрос авторизации, писал так, не проходит

  1.  
  2. $curl = curl_init('http://instantcms.ru/');
  3. $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2)';
  4. curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
  5. curl_setopt($curl, CURLOPT_USERAGENT, $ua);
  6. curl_setopt($curl, CURLOPT_REFERER, 'http://instantcms.ru/');
  7. curl_setopt($curl, CURLOPT_POST, 1);
  8. curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=логин&pass=пароль');
  9. curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  11. $html = curl_exec($curl);
  12. curl_close($curl);
  13.  
#2 2 декабря 2011 в 22:35

curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);

CozaNostra
не нужна

curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=логин&pass=пароль');

CozaNostra
тут должен быть массив, например
  1. $post = array('login' => 'логин',
  2. 'pass' => 'пароль'
  3. );
  4. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
#3 2 декабря 2011 в 22:52


curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);

CozaNostra
не нужна

curl_setopt($curl, CURLOPT_POSTFIELDS, 'login=логин&pass=пароль');

CozaNostra
тут должен быть массив, например
  1. $post = array('login' => 'логин',
  2. 'pass' => 'пароль'
  3. );
  4. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

Fuze

спасибо)
#4 2 декабря 2011 в 23:05
вроде все верно, но возвращает страницу с неудачной авторизацией

  1.  
  2. $curl = curl_init('http://instantcms.ru/login');
  3. $post = array('login' => 'CozaNostra','pass' => 'пароль');
  4. $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2)';
  5. curl_setopt($curl, CURLOPT_USERAGENT, $ua);
  6. curl_setopt($curl, CURLOPT_REFERER, 'http://instantcms.ru/');
  7. curl_setopt($curl, CURLOPT_POST, 1);
  8. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  9. curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
  10. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  11. $html = curl_exec($curl);
  12. c("browser1")->html = $html;
  13. curl_close($curl);
  14.  
#5 2 декабря 2011 в 23:25

$curl = curl_init('http://instantcms.ru/login');

CozaNostra
редиректы могут неверно отрабатывать
  1. $curl = curl_init('http://instantcms.ru/registration/login');
#6 2 декабря 2011 в 23:33
нивкакую… вот код, выдает страницу авторизации с пустыми полями и без стиля css

  1.  
  2. <?php
  3. $curl = curl_init('http://instantcms.ru/registration/login');
  4. $post = array('login' => 'CozaNostra','pass' => 'пароль');
  5. $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2)';
  6. curl_setopt($curl, CURLOPT_USERAGENT, $ua);
  7. curl_setopt($curl, CURLOPT_REFERER, 'http://instantcms.ru/');
  8. curl_setopt($curl, CURLOPT_POST, 1);
  9. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  10. curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
  11. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  12. $html = curl_exec($curl);
  13. echo $html;
  14. curl_close($curl);
  15. ?>
  16.  
#7 2 декабря 2011 в 23:36
CozaNostra, я что то погорячился с ответами) куки то где? авторизация проходит, но после редиректа ее уже нет.

  1. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //Из какого файла читать
  2. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //В какой файл записывать
#8 3 декабря 2011 в 00:46
по идее вот так должно срабатывать?
  1.  
  2. <?php
  3. $cfile = $_SERVER['DOCUMENT_ROOT']."/cookies.txt";
  4. $curl = curl_init('http://instantcms.ru/registration/login');
  5. $post = array('login' => 'CozaNostra','pass' => 'пароль');
  6. $ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2)';
  7. curl_setopt($curl, CURLOPT_USERAGENT, $ua);
  8. curl_setopt($curl, CURLOPT_REFERER, 'http://instantcms.ru');
  9. curl_setopt($curl, CURLOPT_COOKIEJAR, $cfile);
  10. curl_setopt($curl, CURLOPT_COOKIEFILE,$cfile);
  11. curl_setopt($curl, CURLOPT_POST, 1);
  12. curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  13. curl_setopt($curl, CURLOPT_HEADER, true);
  14. curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
  15. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  16. $html = curl_exec($curl);
  17. curl_close($curl);
  18. echo $html;
  19. ?>
  20.  
#9 3 декабря 2011 в 00:48

по идее вот так должно срабатывать?

CozaNostra
что мешает попробовать?
#10 3 декабря 2011 в 00:53
Вроде при первом запросе авторизацию проходит, так как заголовки возвращают
  1.  
  2. HTTP/1.1 301 Moved Permanently Date: Fri, 02 Dec 2011 20:50:32 GMT Server: Apache Location: http://instantcms.ru/registration/login Content-Length: 251 Connection: close Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Fri, 02 Dec 2011 20:50:32 GMT Server: Apache [b]Set-Cookie: PHPSESSID=d57f81d36e00fd5369d805aa51e7baea;[/b] path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251
  3.  
файл cookies.txt содержит
  1.  
  2. # Netscape HTTP Cookie File
  3. # http://curl.haxx.se/rfc/cookie_spec.html
  4. # This file was generated by libcurl! Edit at your own risk.
  5.  
  6. instantcms.ru FALSE / FALSE 0 PHPSESSID d57f81d36e00fd5369d805aa51e7baea
  7.  
но страницу сайта возвращает с полями для авторизации, и как спарсить допустим страницу профиля...
ощущение что не берет он ничего из файла куков
#11 3 декабря 2011 в 01:13

как спарсить допустим страницу профиля

CozaNostra
передавать PHPSESSID гетом как вариант
#12 5 декабря 2011 в 17:03
  1.  
  2. $host='site.ru';
  3. $url = 'http://'.$host.'/';
  4. $urlTo = 'http://'.$host.'/login';
  5. $login = 'login';
  6. $pass = 'password';
  7. $cookie = 'cookie.dat';
  8. $post = array('login' => $login,
  9. 'pass' => $pass,
  10. 'remember'=> true,
  11. 'Submit' => true,
  12. 'login_btn' => true
  13. );
  14. $ch = curl_init();
  15. curl_setopt($ch, CURLOPT_URL, $url);
  16. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  17. $html = curl_exec($ch);
  18. curl_setopt($ch, CURLOPT_URL, $urlTo);
  19. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
  20. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
  21. curl_setopt($ch, CURLOPT_POST, true);
  22. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  23. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  24. $html = curl_exec($ch);
  25. curl_close($ch);
  26.  
скрипт рабочий)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.