[Multi Curl] Авторизация -> Переход по ссылке -> Пост

Тема в разделе "PHP", создана пользователем alexz15, 10 окт 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Всем привет, подскажите кто знает, как реализовать "Авторизацию -> Переход по ссылке -> Пост" на Multi Curl?
    При чем, последние два пункта должны отдавать те же куки, прокси и браузер, что и в первом.

    Для обычного курла все понятно:
    PHP:
    <?php
      $ch 
    curl_init();

      
    curl_setopt($chCURLOPT_URL'http://url/1/');

      
    curl_setopt($chCURLOPT_USERAGENT'Mozilla');
      
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
      
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);

      
    curl_setopt($chCURLOPT_PROXY'127.0.0.1:9050');
      
    curl_setopt($chCURLOPT_PROXYTYPECURLPROXY_SOCKS5);

      
    $cookies 'cookies.txt';
      
    curl_setopt($chCURLOPT_COOKIEFILE$cookies);
      
    curl_setopt($chCURLOPT_COOKIEJAR$cookies);
      
      
    curl_setopt($chCURLOPT_POST1);
      
    curl_setopt($chCURLOPT_POSTFIELDS"Login=$login&Password=$password");

      
    // авторизация
      
    $html curl_exec($ch);

      
    // переход по ссылке
      
    curl_setopt($chCURLOPT_URL'http://url/2/');
      
    $html curl_exec($ch);

      
    // пост
      
    curl_setopt($chCURLOPT_POST1);
      
    curl_setopt($chCURLOPT_POSTFIELDS"comment=$comment");
      
    curl_setopt($chCURLOPT_URL'http://url/3/');
      
    $html curl_exec($ch);

      
    curl_close($ch);
    ?>
    Можно ли подобное сделать на Multi Curl?
     
    Последнее редактирование: 10 окт 2014
  2. warg

    warg Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    122
    Симпатии:
    122
    в принципе можно
    только первый запрос (авторизация) все равно должен идти отдельно и первым, так как для остальных не будет нужной куки до тех пор пока он не отработается.
    прокси и браузер можно указывать для каждого канала один и тот же, единственная проблема это совместный доступ к файлу куков.
    избежать ее можно устанавливая куки для каждого из каналов не через файл, а через curl_setopt($ch, CURLOPT_COOKIE,"Name=Value");

    альтернативный вариант использовать библиотеку rolling-curl
     
  3. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    189
    Пробовал этот класс, но он почему-то иногда "вылетает" и все потоки, которые идут с ним, тоже. А так отличный класс, не раз выручал.

    Но я сделал так - разбил на 3 части мультикурл:
    1. подготовил данные для авторизации, отправил в мультикурл и получил куки. куки сохранял в файлы для всех уникальные: md5($data).
    2. затем подготовил данные для "перехода по ссылке" и снова отправил в функцию мультикурл с сохраненными ранее куками, прокси и браузерами.
    3. и в третьей части то же самое - с сохраненными куками сделал пост.

    Код получился конечно длиннее, чем в обычном курле, но зато и скорость получше)
     
    warg нравится это.
  4. kanaps

    kanaps Создатель

    Регистр.:
    19 ноя 2013
    Сообщения:
    17
    Симпатии:
    9
    пару недель назад тоже мучался сам, потом другой дев парился. сайт который скальпили использовал ссл переадресацию на ссл переадресацию и получался луп... так забили и с сохранёными куками скачали в софтине сразу все страницы в 28000 хтмл файлов, а потом уже скальпили в пхп....
    если для скальпеля, то возможно так легче.
     
Статус темы:
Закрыта.