[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тянем, потянем или как дурить хост с добром
Вася Свистоплясов
Вечер добрый, господа!

И так. Вот таким кодом я читаю контент со страницы:


// parameters
$url = 'http://my-hit.ru/film/6284/online';

$content = '';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt(
$curl,
CURLOPT_HTTPHEADER,
Array(
'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' . "\r\n",
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . "\r\n",
'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' . "\r\n",
'Accept-Encoding: gzip, deflate' . "\r\n",
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' . "\r\n",
'Connection: keep-alive' . "\r\n",
"\r\n"
)
);

$nameFilecookies = dirname($_SERVER['SCRIPT_FILENAME']) . '/' . 'filecookies';
curl_setopt($curl, CURLOPT_COOKIEJAR, $nameFilecookies);
curl_setopt($curl, CURLOPT_COOKIEFILE, $nameFilecookies);
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$content = curl_exec($curl);
curl_close($curl);
return $content;


Страница считывается нормально, но что-то происходит с нужными мне ссылками, которые расположены в теле текста страницы. Причём, что интересно, когда скрипт работает на домашнем серваке под виндой, то ссылки нормальные, не битые, а как только запускаю скрипт на хостинге, нужные ссылки битые. Как получить нужные ссылки? Хост как-то определяет, что контент читает бот и выдаёт битые ссылки.

Нормальная ссылка:
http://a-44.my-hit.ru/data2/previews/6284....afb07ea021e1280

Битая:
http://a-94.my-hit.ru/data2/previews/6284....56e0eaecff9b534

id меняется каждые 15 минут, поэтому URL flv-файла необходимо вычислять в рамках сессии.
Короче, код не пошёл. Попробовал завалиться на хост через прокси:


// parameters
$url = 'http://my-hit.ru/film/6284/online';

$content = '';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt(
$curl,
CURLOPT_HTTPHEADER,
Array(
'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' . "\r\n",
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . "\r\n",
'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3' . "\r\n",
'Accept-Encoding: gzip, deflate' . "\r\n",
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7' . "\r\n",
'Connection: keep-alive' . "\r\n",
"\r\n"
)
);

$nameFilecookies = dirname($_SERVER['SCRIPT_FILENAME']) . '/' . 'filecookies';
curl_setopt($curl, CURLOPT_COOKIEJAR, $nameFilecookies);
curl_setopt($curl, CURLOPT_COOKIEFILE, $nameFilecookies);
curl_setopt($curl, CURLOPT_PROXY, '212.48.197.103');
curl_setopt($curl, CURLOPT_PROXYPORT, '80');
curl_setopt($curl, CURLOPT_TIMEOUT, 5);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$content = curl_exec($curl);
curl_close($curl);
return $content;


Вышло, что и на домашнем серваке перестал давать нужные ссылки.

Джава отпадает. Я отключал джаву в браузере и всё равно всё работает. Значит как-то определяет по хидерам, что бот. По другому никак.

Вопрос. Кто-нибудь знает как обойти защиту и получить нужные ссылки на flv-файлы?




Спустя 2 минуты, 4 секунды (27.12.2011 - 19:32) Вася Свистоплясов написал(а):

Нормальная ссылка:
http://a-44.my-hit.ru/data2/previews/6284.flv&showstop=true&autostart=true&buf ferlength=10&streamscript=lighttpd&frontcolor=FFB65A&backcolor=022D96&lightcolor=FF8C00&id=4648b35423ff99110afb07ea021e1280

Битая:
http://a-94.my-hit.ru/data2/previews/6284.flv&showstop=true&autostart=true&buf ferlength=10&streamscript=lighttpd&frontcolor=FFB65A&backcolor=022D96&lightcolor=FF8C00&id=97cc1f44efc5fb8f756e0eaecff9b534

Спустя 1 месяц, 4 дня, 12 часов, 18 минут, 26 секунд (2.02.2012 - 07:50) golovolom написал(а):
Я так понимаю что ссылки этот видеохостинг выдаёт исходя из IP того кто потребовал. И проверяет id по IP. Если id получен не с того айпишника, с которого пытаются грузить - то облом. На локалке работало потому, что айпи локального сервака совпадает с тем айпи с которого закачивают. Заливаешь скрипт на хостинг, делаешь запрос и парсишь этим скриптом от айпи сервака, передаёшь ссылку в браузер - итог, айпи на стороне браузера и айпи сервера разные, видеохостинг обламывает. При использовании прокси: ссылка рабочая для IP прокси сервера. Итог - ни для сервера твоего сайта ни для тебя(сторона браузера) ссылка не сработает.

Если я прав насчёт зависимости ссылки от IP для этого видеохостинга выходы помоему только такие:
1)Использование ретранслятора. Скрипт на сервере получает ссылку, берём по ней видео и транслирует пользователю в браузер. Минусы - офигительная нагрузка на сервер при большом количестве подключений(то-есть нужен мощьный серв). Необходим безлимитный трафик так как идёт перегонка трафика через серв. Скрипты ретранслятора недавно активно кто-то продавал по всему инету по цене порядка 500р, если лень самому реализовавать. Я сам не брал и не знаю что там.

2) Получать ссылку на стороне браузера.
2.1 - JavaScript - нереально из-за политики безопасности. По крайней мере я ещё не наткнулся на способ получения контента кроссдоменным запросом посредством JavaScript (при условии что удалённый сервер, выдающий ссылку не выдаёт её в JSON формате да при этом ещё и должен возвращать имя именно твоей callback функции для обработки ответа)
2.2 Кроссдоменное получение контента на стороне браузера посредством Flash, и распарсивание ссылки. Читал что можно, но не читал как конкретно. По этому я хз как это делается.

Сталкивался я с такой проблемой, пока так и не допёр как реализовать. Пытался поизучать ActionScript, но временно забил на это дело))


ЗЫ: Ещё один вариант есть) Внезапно догадаться как сервер с видео формирует id по значению IP, получать IP пользователя, составлять ссылку исходя из этого и пихать пользователю рабочую ссылку уже конкретно для его IP))

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

Спустя 6 часов, 28 секунд (2.02.2012 - 13:51) Гость_гость написал(а):
Привет!
Вариантикс с ретранслятором не плох, но жрёт много трафика, конечно. Другие технологи сомнительны. Последний вариант самый оптимальный, но нужно разгадать, как формируется id ролика, а это задачка тоже не из лёгких. Сформирует id как-нибудь так md5(md5(md5($ip))) - и уже фиг разгадаешь. Так что тоже не серьёзно. А про ретранслятор где почитать инфу?

Спустя 37 минут, 53 секунды (2.02.2012 - 14:29) golovolom написал(а):
Цитата (Гость_гость @ 2.02.2012 - 10:51)
Привет!
Вариантикс с ретранслятором не плох, но жрёт много трафика, конечно. Другие технологи сомнительны. Последний вариант самый оптимальный, но нужно разгадать, как формируется id ролика, а это задачка тоже не из лёгких. Сформирует id как-нибудь так md5(md5(md5($ip))) - и уже фиг разгадаешь. Так что тоже не серьёзно. А про ретранслятор где почитать инфу?

Насчёт покупки в нете забей "скрипт ретранслятор видео". В основном ретранслятор с контакта вылазит, но я думаю и его переделать под себя можно. А насчёт разработки своего я не знаю где почитать. Меня этот вариант не устроил.

Спустя 17 минут, 58 секунд (2.02.2012 - 14:47) Гость_гость написал(а):
Я так думаю, нужно штудирнуть RTSP и надыбать где-нибудь сырцы flash плейера. Будут сырцы можно откомпилить всё что угодно. Перспектива в том, что в пакеты "видеопотока" можно пихать свою инфу какую желаешь.

Спустя 5 часов, 28 минут, 12 секунд (2.02.2012 - 20:15) golovolom написал(а):
Цитата (Гость_гость @ 2.02.2012 - 11:47)
Я так думаю, нужно штудирнуть RTSP и надыбать где-нибудь сырцы flash плейера. Будут сырцы можно откомпилить всё что угодно. Перспектива в том, что в пакеты "видеопотока" можно пихать свою инфу какую желаешь.

Flash плеер можно декомпилировать различными прогами

Спустя 9 часов, 35 минут, 18 секунд (3.02.2012 - 05:50) Гость_гость написал(а):
С добрым, морозным утречком весь честной народ!
Головолом, вопрос на засыпку. Чёт я пока не врубаюсь в flash-технологию. Вот есть на серваке файл плейера. Ну, допустим, uppod.swf. Когда браузер (адоба флэш) запрашивает видеопоток, то на серваке начинает работать байткод uppod.swf и шлёт данные клиенту? Или как всё происходит?

Спустя 1 день, 1 час, 12 минут, 43 секунды (4.02.2012 - 07:03) golovolom написал(а):
Цитата (Гость_гость @ 3.02.2012 - 02:50)
С добрым, морозным утречком весь честной народ!
Головолом, вопрос на засыпку. Чёт я пока не врубаюсь в flash-технологию. Вот есть на серваке файл плейера. Ну, допустим, uppod.swf. Когда браузер (адоба флэш) запрашивает видеопоток, то на серваке начинает работать байткод uppod.swf и шлёт данные клиенту? Или как всё происходит?

Дык он на серваке только хранится как скомпилированный swf файл, а затем подгружается на сайт в определённое место и посредством ActionScript уже на стороне браузера вытворяет всякое, мне так кажется и ссылку из айпи тоже тут формирует. Только нужно его всковырнуть и посмотреть как он это делает. Про uppod не знаю, его помоему собирают уже на сайте производителя и со стилями, плейлистами уже выгружают готовый. Но например кронтактовский плеер вроде ссылку сам сттряпает гдето внутри себя. Я его декомпилировал, но разобраться с внутренностями не смог, так как знаний в этом ноль.

Спустя 3 дня, 10 часов, 24 минуты, 35 секунд (7.02.2012 - 17:27) Гость_гость написал(а):
Всем привет!
ActionScript для дела взятия текста с чужого домена для дальнейшей обработки не подходит. В любом случае необходимо разрешение в файле crossdomain.xml. Этот файл лежит на сайте-доноре и в нём доложен быть прописан сайт, которому разрешено брать контент.

Спустя 2 часа, 36 минут, 31 секунда (7.02.2012 - 20:04) golovolom написал(а):
Цитата (Гость_гость @ 7.02.2012 - 14:27)
Всем привет!
ActionScript для дела взятия текста с чужого домена для дальнейшей обработки не подходит. В любом случае необходимо разрешение в файле crossdomain.xml. Этот файл лежит на сайте-доноре и в нём доложен быть прописан сайт, которому разрешено брать контент.

печально блин(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.