Вечер добрый, господа! И так. Вот таким кодом я читаю контент со страницы: // 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/62 ... t=true&buf ferlength=10&streamscript=lighttpd&frontcolor=FFB65A&backcolor=022D96&lightcolor=FF8C00&id=4648b35423ff99110afb07ea021e1280 Битая: http://a-94.my-hit.ru/data2/previews/62 ... t=true&buf ferlength=10&streamscript=lighttpd&frontcolor=FFB65A&backcolor=022D96&lightcolor=FF8C00&id=97cc1f44efc5fb8f756e0eaecff9b534 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-файлы?
Ты не разобрался и выцепил то, что тебе показалось ссылкой. И здесь постишь это как ссылку и утверждаешь, что не работает. Ты же даже скопировал не полностью То, что ты называешь ссылкой - это на самом деле параметры, которые передаются во флешплеер. Там вот так: Код (Text): flashvars="file=http://a-84.my-hit.ru/data2/previews/6284.flv&showstop=true& autostart=true&bufferlength=10&streamscript=lighttpd&frontcolor=FFB65A& backcolor=022D96&lightcolor=FF8C00&id=299d96ea90129b666af2df89a7a5dcd4" Т.е. во флешплеер передаются следующие параметры: Код (Text): file=http://a-84.my-hit.ru/data2/previews/6284.flv showstop=true autostart=true bufferlength=10 streamscript=lighttpd frontcolor=FFB65A backcolor=022D96 lightcolor=FF8C00 id=299d96ea90129b666af2df89a7a5dcd4 А вот дальше уже исходя из этих параметров флеш-плеер сам генерирует ссылку, видимо. И получает по ней файл. Причём, он может использовать не все параметры, чтобы получить файл, а только некоторые, какие-то, скорее всего, там для указания настроек отображения (типа fontcolor и т.п.). Возможно, плеер также переименовывает некоторые параметры перед тем, как отправить запрос на сервер. Тебе нужно понять, какой именно запрос отправляет флеш-плеер, какие из этих параметров он присоединяет к запросу, какие нет, в каком они порядке и т.п., чтобы добраться до файла. Чтобы узнать, какой именно запрос уходит из флэша - можешь попробовать установить снифер и разобраться, что это такое и как пользоваться.
П.С. А зачем тебе это всё хоть? Сохранить видеоконтент со всяких ютубов и прочих флэш-видеороликов можно с помощью браузера, в разных браузерах это по-разному. Если мне хочется сохранить ролик себе на комп - я делаю это через Оперу, там всё довольно просто и удобно. Открываешь вкладку с кэшем (opera:cache в адресной строке) и выбираешь там, чтобы показывал только видеоконтент. Дальше открываешь ссылку с самим видеороликом, после чего снова переходишь на вкладку с кэшем - как начинается загрузка ролика - там появляется новый элемент. Щёлкаешь по нём и Опера сама сразу предложит тебе сохранить его на жёсткий диск. Просто я не представляю, зачем это можно делать скриптом? Неужели хочешь все киношки потырить? Обычно сохранишь себе какой-нибудь особо понравившийся фильм - и ладно. А если хочешь всё потырить и свой аналогичный сайт сделать - то это... нехорошо