Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ссылки с якорями (#)
 
 автор: man1   (04.01.2011 в 21:51)   письмо автору
 
 

Приветсвюу всех после Новогодней Пьянки)))

Появился вопрос по поводу странных ссылок (нечто вроде тех, что активно используются последнее время вконтакте) Как собственно такие ссылки курлом открывать?

Пример одной из них:
http://music.yandex.ru/#/artist-tracks/75628

Если бы было http://music.yandex.ru/artist-tracks/75628 - тут все просто...

Как поступить в этом случае?

  Ответить  
 
 автор: cheops   (04.01.2011 в 21:54)   письмо автору
 
   для: man1   (04.01.2011 в 21:51)
 

Отбрасывайте все что после # (и сам знак тоже), как это собственно и делает Web-сервер. Якорь - это сигнал для браузера прокрутить страницу до определенной точки, так как вы загружаете страницу программно и никому её не показываете, в вашем случае он теряет смысл.

  Ответить  
 
 автор: cheops   (04.01.2011 в 21:58)   письмо автору
 
   для: man1   (04.01.2011 в 21:51)
 

Хотя не похоже, чтобы это был якорь, похоже он ведет себя как подкаталог. А что происходит когда вы подставляете адрес в CURL - он разве не обрабатывате его корректно?

  Ответить  
 
 автор: man1   (04.01.2011 в 22:01)   письмо автору
 
   для: cheops   (04.01.2011 в 21:58)
 

404 получается на выходе.
Это какой-то хитрый ajax-скрипт, вот только в исходном коде страницы я его не вижу..

  Ответить  
 
 автор: cheops   (04.01.2011 в 22:04)   письмо автору
 
   для: man1   (04.01.2011 в 22:01)
 

Ищите в заголовках подзагрузку js-скриптов, скорее всего события привязаны к id тэгов, нужно загрузить все js-скрипты и кропотливо их разбирать, пока не сможете восстановить истинный путь к контенту страницы.

  Ответить  
 
 автор: man1   (04.01.2011 в 22:08)   письмо автору
 
   для: cheops   (04.01.2011 в 22:04)
 

Спасибо за совет, попробую поковырять =)

  Ответить  
 
 автор: neadekvat   (04.01.2011 в 22:05)   письмо автору
 
   для: man1   (04.01.2011 в 22:01)
 

Вы знаете, как с помощью js работать с такими ссылками?

  Ответить  
 
 автор: man1   (04.01.2011 в 22:07)   письмо автору
 
   для: neadekvat   (04.01.2011 в 22:05)
 

Чесно говоря, пока не представляю :)
А какие есть варианты?

  Ответить  
 
 автор: neadekvat   (04.01.2011 в 22:09)   письмо автору
 
   для: man1   (04.01.2011 в 22:07)
 

И я не знаю.
Но вот вам придется узнать. Иначе как вы найдете этот код?

  Ответить  
 
 автор: man1   (04.01.2011 в 22:12)   письмо автору
 
   для: neadekvat   (04.01.2011 в 22:09)
 

И я не знаю. Но вот вам придется теперь узнать, как это делается. Иначе как вы найдете этот код?

Нашел вот такие интересные строчки, скорее всего, именно они ответственны за вывод контента таким образом. Только опять мистика, подставляя их в урл http://music.yandex.ru/ссылка_на_скрипт - получаем 404))

<script type="text/javascript" charset="utf-8" src="//yandex.st/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="//yandex.st/lego/2.4-105/common/js/_common.js"></script>
<script type="text/javascript" charset="utf-8" src="/pages/_music.js?build=0.244"></script>
<script type="text/javascript" charset="utf-8" src="//yandex.st/share/share.js"></script>
<script type="text/javascript" charset="utf-8" src="/js/_all.js?build=0.244"></script>>

  Ответить  
 
 автор: cheops   (04.01.2011 в 22:14)   письмо автору
 
   для: man1   (04.01.2011 в 22:12)
 

Страницу загрузите и сохраните на жесткий диск - они там обязательно будут, не смотря на все хитрости Яндекса, а если чего-то не будет, значит оно и не требуется для работы страницы.

Вот это точно открывается
http://music.yandex.ru/js/_all.js?build=0.244

  Ответить  
 
 автор: man1   (04.01.2011 в 22:25)   письмо автору
 
   для: cheops   (04.01.2011 в 22:14)
 

Попробовал сейчас - никак не дается. Придется разбираться в онлайне.

  Ответить  
 
 автор: cheops   (04.01.2011 в 22:17)   письмо автору
 
   для: man1   (04.01.2011 в 22:12)
 

А перед тем, что начинается на // просто ставьте http://, например, http://yandex.st/jquery/1.4.2/jquery.min.js Впрочем jQuery вам не нужна - это JS-библиотека - в ней заведомо нет нужного вам кода, правда потребуется знать её синтаксис, чтобы разобрать остальной код.

  Ответить  
 
 автор: man1   (04.01.2011 в 22:26)   письмо автору
 
   для: cheops   (04.01.2011 в 22:17)
 

Понятно, мне просто смутила зона .st. Думал это ошибка вебмастеров яндекса, поставили "//" вместо "/"

  Ответить  
 
 автор: cheops   (04.01.2011 в 22:29)   письмо автору
 
   для: man1   (04.01.2011 в 22:26)
 

Нет, они просто экономят - у них каждый символ на странице потом в гигабайты трафика выливается, вот и сокращаются где могут... правда ребята из этой группы пока не больно-то ужимаются (наверное трафик не высокий), но корпоративным стандартам следуют :)))

  Ответить  
 
 автор: cheops   (04.01.2011 в 22:00)   письмо автору
 
   для: man1   (04.01.2011 в 21:51)
 

Насколько я понял, это AJAX-страницы, вам нужно проанализировать JS-код и проследить откуда реально контент загружается и обращаться к этим новым страницам.

  Ответить  
 
 автор: Wyfinger   (06.01.2011 в 15:07)   письмо автору
 
   для: cheops   (04.01.2011 в 22:00)
 

Возможно я ошибаюсь, но.
Подобные ссылки используются в AJAX. Как правило в AJAX ссылки имеют вид:
<a href="#: onclick="jsfunc">aaa</a>


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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования