вк и php+curl

H2
На сайте с 07.02.2012
Offline
21
1150

Добрый день!

Столкнулся с такой проблемой:

при выводе $answer визуально запрашиваемую страницу не видно, но в исходном коде она есть, в чём ошибка?

сам код:

<?php

if (!empty($_POST["url"]))
{
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) ' .
'Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';

$cookie = '';
$name = ($_POST["url"]);
$login = 'login@yandex.ru';
$password = 'password';

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login');

$post = array(
'act' => 'login',
'q' => '',
'al_frame' => '1',
'expire' => '',
'captcha_sid' => '',
'captcha_key' => '',
'from_host' => 'vkontakte.ru',
'email' => $login,
'pass' => $password
);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt');
$answer = curl_exec($ch);

$sid = substr($answer, strpos($answer, "setCookieEx('sid', '") + 20, 60);
$cookie = 'remixsid=' . $sid;

curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);

curl_setopt($ch, CURLOPT_URL, 'http://vkontakte.ru/al_search.php');

$post = array(
'al' => '1',
'c[q]' => $name,
'c[section]' => 'audio'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$answer = curl_exec($ch);
echo $answer;
curl_close($ch);

}
else
{
echo "Переменные не дошли. Проверьте все еще раз.";
}

?>
[umka]
На сайте с 25.05.2008
Offline
456
#1

Видимо, из-за того, что не подгружаются стили, ничего и не видно

Лог в помощь!
H2
На сайте с 07.02.2012
Offline
21
#2
'[umka:
;10021138']Видимо, из-за того, что не подгружаются стили, ничего и не видно

спасибо, с этим только что разобрался.

а как после получения $answer'a мне обработать полученный html код?

что бы мне выводило на экран не всю страницу, а лишь нужный мне кусок кода?

[umka]
На сайте с 25.05.2008
Offline
456
#3
http23:
спасибо, с этим только что разобрался.
а как после получения $answer'a мне обработать полученный html код?
что бы мне выводило на экран не всю страницу, а лишь нужный мне кусок кода?

Зависит от того, что именно вам нужно получить.

С помощью волшебной силы программирования многие задачи решаемы.

H2
На сайте с 07.02.2012
Offline
21
#4
'[umka:
;10021187']Зависит от того, что именно вам нужно получить.
С помощью волшебной силы программирования многие задачи решаемы.

ну например если мне нужно получить <title></title>

Max_Q
На сайте с 14.11.2011
Offline
9
#5
http23:
ну например если мне нужно получить <title></title>

Погуглите, что такое регулярные выражения.

Удобнее, конечно, html парсить с помощью http://sourceforge.net/projects/simplehtmldom/files/simplehtmldom/, но вам лучше сначала усвоить регулярные выражения.

H2
На сайте с 07.02.2012
Offline
21
#6
Max_Q:
Погуглите, что такое регулярные выражения.
Удобнее, конечно, html парсить с помощью http://sourceforge.net/projects/simplehtmldom/files/simplehtmldom/, но вам лучше сначала усвоить регулярные выражения.

спасибо, почитаю =)

H2
На сайте с 07.02.2012
Offline
21
#7

Max_Q спасибо большое за совет, очень помогло!

теперь столкнулся с такой совсем не нормальной проблемой:

после получения нужного мне кода, а именно названия трэка и ссылки на скачивания

я решил проверить полученную ссылку, но мне открылась 404 страница, сравнил ссылку полученную из вк с ссылкой на странице самого вк, а они отличаются вот этим кодом:

http://cs123.vk.com/u123456/audio/90b117e5cce2.mp3

в чём может быть проблема?

LinnTroll
На сайте с 12.01.2011
Offline
15
#8

В том что ВК отдаёт для разных IP разные ссылки на один и тот же трек, для защиты от таких как вы)

http://vps.ua/ (https://vps.ua/clients/aff.php?aff=201) - самый лучший хостинг.
H2
На сайте с 07.02.2012
Offline
21
#9
LinnTroll:
В том что ВК отдаёт для разных IP разные ссылки на один и тот же трек, для защиты от таких как вы)

спасибо, но ничего нарушающее правило ВК я не сделал, прямые ссылки же я не предоставляю =)

а выделенный ip от хостинга или proxy сможет решить эту проблему?

LinnTroll
На сайте с 12.01.2011
Offline
15
#10

Ну во первых нарушаете. В правилах запрещено обращение к страницам сайта кроме как через API.

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

Решить проблему можно только одним путём, скачивать трек к себе на сайт, и затем отдавать его пользователю, что опять нарушает правила.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий