Авторизация без curl

23 февраля, 2013 · Posted in Без рубрики · Comment 

Есть тип веб-сервера, куда поставить curl проблематично.
Но хочется иметь доступ к сайтам с авторизацией.

Посему, пример кода, как это сделать в этих условиях:


// логин и пароль
 $postdata = http_build_query(
 array(
 'login' => $ini['login'],
 'passwd' => $ini['password']
 )
 );

// формируем заголовок
$opts = array(
 'http'=>array(
 'method'=>"POST",
 'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
 "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
 "Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
 "Accept-Encoding:identity, *;q=0",
 'content' => $postdata
 )
 );

// сам запрос на авторизацию
$context = stream_context_create($opts);
 $result = file_get_contents('http://нужный сайт/login.aspx', false, $context);
 $coo = Array();
 foreach( $http_response_header as $head){
 if(stristr($head, 'Set-Cookie:' )) $coo[] = (str_ireplace('Set-Cookie:', '', $head ));
 }
 $coo = implode('; ',$coo);

Тут мы получили от сайта куки и собрали их для следующего использования

Используя полученные куки, далее уже получаем страницу, на которой нам нужны данные:

$opts = array(
 'http'=>array(
 'method'=>"POST",
 'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
 "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
 "Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
 "Accept-Encoding:identity, *;q=0 \r\n".
 "Cookie: ".$coo,
 'content' => $postdata
 )
 );

$context = stream_context_create($opts);
 $result = file_get_contents('http://нужный сайт/profile.aspx?page='.$f_page, false, $context);
<pre>

———————
Ну и обновился плагин для медиатанков для FS.UA: http://code.google.com/p/fsua/

  • Добавлена работа с избранным
  • Переделан поиск
  • Переделан парсинг
  • Постер  в материале
  • мелкие правки