За последние 24 часа нас посетили 55011 программистов и 1776 роботов. Сейчас ищут 875 программистов ...

Эмуляции cookie

Тема в разделе "PHP для новичков", создана пользователем -Vladimir-, 27 дек 2010.

  1. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Нужно пропарсить страницу, которая требует cookie.

    Как сделать, чтобы при обращении типа file_get_contents("http://сайт.ру/страница/"); можно было получить то же, что и с браузера с cookie ?

    Как сделать эмуляцию cookie для парсинга страницы?
     
  2. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    (трудно) через сокеты, вручную формируя заголовок с кукисами
    (легко) через cURL
     
  3. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Нашёл здесь http://www.softtime.ru/forum/read.php?i ... heme=53904 такой скриптик:

    PHP:
    1. <?
    2. $url = "http://win.mail.ru/cgi-bin/auth";  
    3. $post = "Login=YOU_NAME&Domain=YOU_DOMAIN&Password=YOU_PASSWD";
    4. $cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookie.txt';
    5. $ch = curl_init();  
    6. curl_setopt($ch, CURLOPT_URL,$url);
    7. curl_setopt($ch, CURLOPT_FAILONERROR, 1);  
    8. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    9. curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    10. curl_setopt($ch, CURLOPT_POST, 1);
    11. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    12. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
    13. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
    14. curl_setopt($ch, CURLOPT_NOBODY, 0);
    15. curl_setopt($ch, CURLOPT_HEADER, 0);
    16. $result = curl_exec($ch);  
    17. curl_close($ch);  
    18.  
    19. echo $result;
    20. ?>
    Что тут надо сделать, чтобы он заработал?
     
  4. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    curl_setopt($ch, CURLOPT_COOKIE, $cookie);

    php.net/manual рулит
     
  5. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    В скрипте, что выше, - разобрался, всё ок, отображает первую страницу при входе в почтовый ящик.
    Как вот сделать возможным дальшейшие переходы, например, в Мой_мир ?
     
  6. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    перед curl_close($ch);

    curl_setopt($ch, CURLOPT_URL,'http://my.mail.ru/');
    $result2 = curl_exec($ch);
     
  7. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Закрытые страницы нормально грузит.
    Как сделать, чтобы ещё приватные картинки загружал?

    PHP:
    1. <?
    2. $content="http://content.foto.mail.ru/mail/логин/альбом/картинка.jpg";
    3. header("Content-type: image/jpeg");
    4. readfile($content);
    5. ?>
     
  8. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    всё ок, разобрался!