php парсер && авторизация и сохранение сессии

Тема в разделе "Как сделать...", создана пользователем DOLARiON, 13 апр 2009.

Статус темы:
Закрыта.
  1. DOLARiON

    DOLARiON

    Регистр.:
    4 сен 2006
    Сообщения:
    191
    Симпатии:
    48
    Дано:
    есть сайт предоставляющий часть инфы в открытом доступе, а остальную часть - под паролем (платник)

    Нужно:
    через php каким-то образом авторизироваться на этом сайте и дергать инфу из под одной сессией но из разных запросов...

    Т.е. нужно один раз авторизоваться и дергать инфу весь день из под этой авторизации....... это чтобы не спалили :)

    соответственно,
    каким образом можно сохранять отправляющиеся куки и все остальное - чтобы все выглядело какбудто это юзверь лазиет? :-]

    наверника есть готовые решения... поделитесь плиз :-]
     
  2. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Готового наврятли ! Единственное могу предложить свои услуги по написанию такого скрипта.

    Но нужно обсудить подробности! Если что милости прошу в личку или в ICQ#355016572
    По цене договаримся;)
     
  3. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    скрипт простейший , смотри курл

    если устроят десктопные решения -- телепорт
     
  4. goodvin

    goodvin Человек-Волшебник

    Регистр.:
    27 июн 2006
    Сообщения:
    667
    Симпатии:
    687
    Писать 20 мин. если нуно стукнив пм, сделаю все кода время будет.
     
    DOLARiON нравится это.
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    или под хайд 200, если ничего сверхсекретного

    в ответ код получишь )
     
  6. NoN

    NoN Постоялец

    Регистр.:
    25 ноя 2008
    Сообщения:
    79
    Симпатии:
    33
    Пример реализации аунтификации

    Вконтакте

    Код:
    function socket_do($host,$vars,$service_uri,$browser,$cookies='',$sread=1,$method='POST',$ref='',$addheaders=1,$proxy=false,$proxyport=0,$HTTP='1.0') 
    { 
      global $ajax; 
    
      $ret=""; 
    
      if($method=='GET' && $vars) 
      { 
        $service_uri.='?'.$vars; 
        $vars=''; 
      } 
    
      $header="Host: $host\r\n"; 
      $header.="User-Agent: $browser\r\n"; 
    
      if($addheaders==1) 
      { 
        $header.="Content-Type: application/x-www-form-urlencoded\r\n"; 
        $header.="Content-Length: ".strlen($vars)."\r\n"; 
      } 
      else if($addheaders==0) 
      { 
        $header.="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; 
        $header.="Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"; 
        $header.="Accept-Encoding: \r\n"; 
        $header.="Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"; 
      } 
      else if($addheaders==2) 
      { 
        $header.="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; 
        $header.="Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"; 
        $header.="Accept-Encoding: \r\n"; 
        $header.="Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"; 
        $header.="Pragma: no-cache\r\n"; 
        $header.="Cache-Control: no-cache\r\n"; 
        $header.="Content-Length: ".strlen($vars)."\r\n"; 
        $header.="Content-Type: application/x-www-form-urlencoded; charset=windows-1251\r\n"; 
      } 
      else if($addheaders==3) 
      { 
        $header.="Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; 
        $header.="Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"; 
        $header.="Accept-Encoding: gzip,deflate\r\n"; 
        $header.="Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"; 
      } 
    
    
      if($ref) $header.="Referer: $ref\r\n"; 
    
      $header.="Connection: close\r\n"; 
    
      if($cookies) 
        $header.="Cookie: $cookies\r\n"; 
    
      $header.="\r\n"; 
    
    
      if($proxy) 
      { 
        $addquery="$method http://$host$service_uri  HTTP/$HTTP\r\n"; 
        $fp=@fsockopen("tcp://".$proxy,$proxyport,$errno,$errstr,30); 
      } 
      else 
      { 
        $addquery="$method $service_uri  HTTP/$HTTP\r\n"; 
        $fp=@fsockopen("tcp://".$host,80,$errno,$errstr,30); 
      } 
    
      if(!$fp) 
      { 
        if($ajax) 
          print "addMes('<font color=red>Socket error: <i>$errstr ($errno)</i></font><br>');nextReg2();"; 
        else 
          print "<font color=red>Socket error: <i>$errstr ($errno)</i></font>"; 
    
        exit(); 
      } 
    
      stream_set_timeout($fp,30); 
    
      fputs($fp,$addquery); 
      fputs($fp,$header.$vars); 
    
      if($sread) 
      { 
        while(!feof($fp)) 
        { 
          $ret.=fgets($fp, 128); 
        } 
      } 
    
      fclose($fp); 
    
      return $ret; 
    } 
    
    
    $ret=socket_do("vkontakte.ru","email={$login}&pass={$pwd}","/login.php",$browser,'',1,"POST",'http://vkontakte.ru',1,'',''); 
     
    DOLARiON нравится это.
  7. VictorVi

    VictorVi Прохожие

    Я в свое время такие вещи на snoopy писал. Имхо проще и понятнее чем курл.
     
  8. Xacret.T

    Xacret.T Постоялец

    Регистр.:
    2 июн 2006
    Сообщения:
    139
    Симпатии:
    26
    не смотря на то, что раздел не тематический, но тема та же - спрошу:

    передо мной стоит та же проблема, но решить ее надо на ROR. может ли кто-то помочь?
     
  9. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
    копайте отсюда, имхо,http://sashkoblog.blogspot.com/2007/10/blog-post_18.html
     
Статус темы:
Закрыта.