За последние 24 часа нас посетили 20889 программистов и 1610 роботов. Сейчас ищут 1169 программистов ...

Скачать файлы по ссылкам вида file.php?id=2121

Тема в разделе "PHP для профи", создана пользователем vad_shesh, 28 авг 2017.

  1. vad_shesh

    vad_shesh Новичок

    С нами с:
    28 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Уважаемые коллеги. Я пишу скрипт автоскачивания прайсов из кабинета дилера на сайте http://gastrorag.ru/dealers/cabinet/ в папку на своем фтп. В кабинет захожу, используя curl, получаю список ссылок на прайсы без каких либо проблем. Но ссылки имеют вид <a href="file.php?id=2121">....</a>. Т.е. вот эти file.php?id=2521 я получаю, но как из этого получить сам файл?
    Вот так пытаюсь:
    PHP:
    1. $url="http://gastrorag.ru/dealers/cabinet/file.php?id=2121"; //ссыл
    2. $ch = curl_init();
    3. curl_setopt($ch, CURLOPT_URL, $url);
    4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    5. curl_setopt($ch, CURLOPT_SSLVERSION,3);
    6. $data = curl_exec ($ch);
    Но возникает ошибка - error, don't access right, что видимо правильно, ведь я пытаюсь скачать как бы файл file.php. Я так думаю, что задача решения не имеет?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.588
    Симпатии:
    1.763
    А у диллера нет API для таких вещей? Ты не пытаешься скачать файл php, видимо, из кабинета этот файл доступен только после авторизации
     
  3. vad_shesh

    vad_shesh Новичок

    С нами с:
    28 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Авторизацию я прохожу, используя curl, поскольку я получаю контент страницы с этими самыми ссылками (они внутри кабинета лежат), а вот что с ними дальше делать... Их бы тоже как-то через курл пропустить, но только как?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.588
    Симпатии:
    1.763
    Авторизацию надо слать каждый раз. И владелец не против таких экспериментов?
     
  5. vad_shesh

    vad_shesh Новичок

    С нами с:
    28 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    А как это должно выглядеть?
    - авторизовались курлом на странице http://gastrorag.ru/dealers/cabinet/ - получили контент той же страницы со списком этих ссылок <a href="file.php?id=2121">....</a>
    - отпарсили этот список - получили список "file.php?id=2121", "file.php?id=2122", "file.php?id=2123"
    А дальше как? Авторизовываться для каждой ссылки на http://gastrorag.ru/dealers/cabinet/file.php (т.е. слать авторизацию в этот файл) и потом типа
    PHP:
    1. curl_setopt($ch, CURLOPT_URL, $url);
    2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    3. curl_setopt($ch, CURLOPT_SSLVERSION,3);
    4. $data = curl_exec ($ch);
    где $url - это http://gastrorag.ru/dealers/cabinet/file.php?id=2121 и т.д.
     
  6. vad_shesh

    vad_shesh Новичок

    С нами с:
    28 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Выглядеть это должно так:
    PHP:
    1.     $url=$config[0]['url'].$fl[0]."?id=$id[1]";
    2. //    echo("<br>url=$url<br>");
    3.  
    4.     $ch = curl_init();
    5.     curl_setopt($ch, CURLOPT_URL, $url);
    6.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    7.     curl_setopt($ch, CURLOPT_SSLVERSION,3);
    8.  
    9.     //сохранение кук
    10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    11.     curl_setopt($ch, CURLOPT_COOKIEJAR,"$home/cookie.txt");
    12.     curl_setopt($ch, CURLOPT_COOKIEFILE, "$home/cookie.txt");
    13.     curl_setopt($ch, CURLOPT_HEADER, FALSE);
    14.    
    15.     // прописывание броузера
    16.     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)');
    17.     $data = curl_exec ($ch);
    18.     curl_close ($ch);
    19.    
    20.     file_put_contents("$home/files/gastrorag_$name", $data);
    Т.е. кроме этих ссылок, надо было куки установить и броузер. Спасибо, mkramer! Натолкнул на мысль.