Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Получить код страницы в vk.com (https://javascript.ru/forum/server/46610-poluchit-kod-stranicy-v-vk-com.html)

Гробовщик 16.04.2014 19:55

Получить код страницы в vk.com
 
Доброго времени суток, ув. форумчане. Столкнулся с проблемой получения исходного кода со страницы vk например с этой http://vk.com/durov. Понимаю что нужно через curl но все мои старания не увенчались успехом, даже авторизация не получилась (в целом она и не важна)

devote 16.04.2014 20:45

curl не поможет, так как вконтакт весь построен на аяксе... Вытаскивать код нужно тем что может воспроизводить JavaScript, простыми словами эмулировать работу браузера.

MVS 17.04.2014 04:33

Самый обычный cUrl, страница Дурова с id1, в поле ввода наберите 1 и попадете к нему
<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
	<base href="http://vk.com/" />
 </head>
 <body>
 
   <br>
  <form method="post" >
  <div><input type="text" placeholder="Ваш ID ВКонтакте" name="id" /></div>
  <div><input type="submit" value="Посмотреть" /></div>
  </form> 
  <br>
	
<?php
// парсим вконтактике имя пользователя
if(isset($_POST['id'])) {
 $id = $_POST['id'];
 $urlTo = 'http://vk.com/id'.$id;      // Куда данные послать
  $ch = curl_init();                     // Инициализация сеанса
  curl_setopt($ch, CURLOPT_URL, $urlTo); // Куда данные послать
  curl_setopt($ch, CURLOPT_HEADER, 0);   // получать заголовки
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
  curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36');
  curl_setopt($ch, CURLOPT_REFERER, 'http://vk.com');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Говорим скрипту, чтобы он следовал за редиректами которые происходят во время авторизации
  curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:')); // это необходимо, чтобы cURL не высылал заголовок на ожидание
    $tempRes = curl_exec($ch); 
  curl_close($ch); // Завершаем сеанс

$res = iconv('windows-1251', 'utf-8', $tempRes); // перекодируем с "windows-1251" в "utf-8"
preg_match('#<title>(.*)\|(.*)<\/title>#ui', $res, $result);
 $name = trim($result[1]); // получаем имя пользователя

// записываем в файл
  if($name != '404 Not' && $name != 'Інформація' && $name != 'Информация' && $name != '') {
	   $write = fopen('id.txt','a+');
	   fwrite($write, $tempRes."\r\n");
	    fclose($write);
    $results = 'Запись добавлена!';
	} else {
	  $results = $id.' - Такого пользователя не существует';
	}
}

echo $results.'<br>';
echo $name.'<br>'; // имя пользователя
echo $res; // выводим страницу в браузер
?>
 </body>
</html>

Гробовщик 18.04.2014 07:19

MVS,
Спасибо большое, работает идеальнее чем я даже представлял, и отдельное спасибо за коментарии


Часовой пояс GMT +3, время: 23:41.