Парсер с авторизацией

Discussion in 'PHP' started by Raine, 9 Jul 2010.

  1. Raine

    Raine New Member

    Joined:
    14 Feb 2010
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Мне нужно спарсить одну информацию, но чтобы получить к ней доступ надо ввести логин и пароль.
    Я хочу написать скрипт, чтобы он вводил логин, пароль, авторизовывался, а потом парсил инфу.
    Но проблема в авторизации.
    Я делал так:
    PHP:
    <form method=post>
    <
    input type=text name=parol value="123456">
    </
    form>
    <
    script type="text/javascript">document.forms[0].submit()</script>
    Так я получал доступ к нужной информации, но на страницу заходил сам браузер, а мне нужно, чтобы это делал только скрипт.
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    PHP:
    curl_setopt ($curlCURLOPT_POST1);
    curl_setopt ($curlCURLOPT_POSTFIELDS'login=mylogin&password=mypassword');
     
  3. Kusto

    Kusto Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    886
    Likes Received:
    678
    Reputations:
    510
    вообщето для каждого случая надо снифать что отправляет и принимает ваш браузер и сервер, но самая распостраненная авторизация с курлом примерно вот
    PHP:
    function curl($url,$post

    $ch curl_init();   
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($ch,CURLOPT_REFERER,$url);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"); 
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);      
    curl_setopt($chCURLOPT_POSTFIELDS$post); 
    curl_setopt($chCURLOPT_COOKIEJAR$_SERVER['DOCUMENT_ROOT'].'/cookie.txt');   
    $result curl_exec($ch);       
    curl_setopt($chCURLOPT_URL$url);      
    curl_setopt($chCURLOPT_POST0);    
    curl_setopt($chCURLOPT_COOKIEFILE$_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
    $result curl_exec($ch);       
    curl_close($ch); 
    return 
    $result
    };
    надеюсь не надо обьяснять как пользоваться этой функцией, иначе я просто потерял время)) и мне было бы легче написать готовое решение))))
     
    1 person likes this.
  4. [0rby]

    [0rby] Banned

    Joined:
    9 Jul 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Библиотека Curl далеко не везде есть, по своему опыту советую использовать сокеты(fsockopen() или socket_create()), желательно хоть немного знать протокол HTTP чтобы отправить POST запрос. После отправки пост запроса с нужными данными советую использовать регулярные выражения дабы вытащить нужные данные из ответа, но тут попроще, напрмер:
    PHP:
    preg_match_all("|Balance: (.*)<|"$content$out);
    if (
    count($out[0]) != 0)
    {
      foreach(
    $out[0] as $str)
      {
        echo 
    trim($str)."<br>";
        
    flush();
      }
    }