Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > получить любую информацию с другого узла |
Автор: Alx 11.3.2006, 16:15 |
привет. есть большой html-список ссылок, генерируемый PHP из простого текстового списка. нужно как то пройтись (либо PHP во время генерации, либо JS после загрузки) по списку и проверить ссылки на валидность. все страница расположены на narod.ru и при неправильной ссылке выводится http://narod.yandex.ru/404 страница. нужно как-то открыть эти ссылки и узнать, какие из них приводят на 404-ю и записать их, чтобы потом можно было в ручную исправить. вот, как это сделать? может, фреймами/окнами или ещё как... |
Автор: Aliance 11.3.2006, 19:35 |
Думаю тебе нужно решать эту задачу http://forum.vingrad.ru/index.php?showforum=207, ибо будет более корректным. Но это мое имхо. |
Автор: Alx 11.3.2006, 19:38 |
не хотелось бы php юзать... |
Автор: Ciber SLasH 11.3.2006, 20:20 |
Иначе придётся юзать либо убогий IFRAME, либо XmlHttpRequest. Имхо лучше это делать на сервере. |
Автор: Alx 11.3.2006, 21:13 |
не понял... |
Автор: Ciber SLasH 11.3.2006, 21:16 |
Что именно? |
Автор: Ciber SLasH 11.3.2006, 21:35 |
Вот именно, поэтому я предложил работать на стороне сервера. |
Автор: Alx 11.3.2006, 21:53 | ||
![]() |
Автор: Ciber SLasH 11.3.2006, 21:59 |
Alx, ну что тут не понятного? Есть как я уже сказал 3 варианта: 1) обрабатывать всё на сервере 2) юзать IFRAME. Загружаешь в него проверяемые ссылки, выдираешь контент в переменную и анализируешь на текст, где должно быть что-то из: 404, Not found. 3) юзать XmlHttpRequest — это опять же запрос на сервер, т.е. с его помощью отсылаешь запрос на сервер и если ссылка битая, то прийдёт заголовок с кодом 404 Вот собсна и всё. ![]() |
Автор: Alx 11.3.2006, 23:16 |
Ciber SLasH, в чем разница между первым и третим? и как получить контент из iframe содержимое которого на другом узле? |
Автор: Ciber SLasH 12.3.2006, 09:31 |
Тем, что на сервере это быстрее и клиентский код будет намного меньше, чем при использовании 3-го метода, а уменьшение кода благополучно влияет на быстроту загрузки. ![]() http://forum.vingrad.ru/index.php?showtopic=73988 |
Автор: Alx 12.3.2006, 12:17 |
Ciber SLasH, я тебя не понимаю... кто-нибудь ещё скажите мне, что сделать это средствами JS нельзя и я успокоюсь и сделаю через PHP. |
Автор: Aliance 12.3.2006, 16:17 |
Сделать можно, только нужно ли… |
Автор: 12345c 13.3.2006, 00:12 |
Alx, при попытке что-либо прочитать из чужого фрейма идёт ошибка доступа к другому сайту. Поэтому, что пришло - как узнаешь? Если по XMLHttpRequest, то в FF не работает, а так - получишь код возврата. Так что, я вижу, что можно только для IE. Есть у кого другиек методы? |
Автор: Alx 13.3.2006, 13:25 | ||
12345c, да мне пофиг какой браузер)))) мне надо просто "пропинговать" УРЛы, чтобы узнать какие из низ валидны, а какие - нет, чтобы в ручную ихисправить. но это же опять идет использование php. просто я не хочу пользоваться сокетами и все такое. это слишком муторно. где-то тут видел что-то вроде
разве эта функция работает для страниц на другом сервере? |
Автор: 12345c 13.3.2006, 15:03 |
Нет, грузишь сразу проверяемый УРЛ в объект XMLHttp и смотришь состояние. |
Автор: Alx 13.3.2006, 18:12 |
12345c, сорри, но см. первый пост... |
Автор: 12345c 13.3.2006, 19:03 |
Т.е. 404-я ошибка не выдаётся? Я бы попробовал извлечь что-то по XMLHttpRequest на клиенте, заранее сказать трудно. Через прокси на сервере, конечно, будет работать, контент проанализируется. |
Автор: Alx 13.3.2006, 20:47 |
эх, лана, буду тра**ть сокеты) всем пасиб) |
Автор: S.A.P. 13.3.2006, 20:54 |
Можно попробовать сделать мегахитрую вещь ( ![]() |
Автор: Aliance 13.3.2006, 21:31 |
совершенно точно работает. я вместо сокетов ее использую |
Автор: Alx 13.3.2006, 22:02 |
Aliance, ухт... тогда, наверное, всё будет гораздо проще...) спасибо большое!!) |
Автор: 12345c 13.3.2006, 23:37 |
file_get_contents(), конечно, работает вместо сокетов, с одним условием. Сервер не должен стоять за прокси, иначе без сокетов не обойтись. |
Автор: Ciber SLasH 14.3.2006, 12:38 | ||
Если пофиг какой браузер, то можно таким методом для IE сделать (остальные браузеры, как оказалось ни так, ни через IFRAME не позволяют к чужим доменам обращаться):
|
Автор: Aliance 26.3.2006, 23:31 | ||
Вот нашел еще:
|
Автор: Alx 1.4.2006, 20:20 |
рибята!!! спасибо всем, но http://mir-fuchsia.narod.ru/wronglink.html страница не существует!!! а ошибку 404 не возвращает! |
Автор: S.A.P. 1.4.2006, 20:57 |
Alx, разумеется не возвращает ![]() |
Автор: Alx 1.4.2006, 21:12 |
S.A.P., ![]() я всё понимаю) мне наоборот нужно было именно народовскую страницу "простукивать"! поэтому file_get_contents() подходит, а просто реквест и проверка на загрузку документа - нет!! (см. первый пост) |
Автор: S.A.P. 1.4.2006, 22:48 |
Alx, еще раз ![]() У нас есть сервер A, к которому мы имеем прямой доступ. Где - то там есть сервер B. На сераере B есть некоторые страницы, список которых у нас имеецца. Задача: определить, запросы на какие страницы вернут 404 Not found и на какие 200 OK. Я правильно понял? ![]() Если да, то сам контент запрашиваемых страниц нас не интересует (поэтому file_get_contents тут не к месту). А интересуют нас заголовки, которые вернутся с сервера B в ответ на HEAD запрос. Решение: 1. На сервере, при помощи fsockopen и fwrite составлять HEAD запросы к твоему узлу по каждому URL из списка и читать заголовки, которые возвращаются. 2. Либо на сервере установить mod_rewrite с сервера A на сервер B, что нам позволит общаться HEAD запросами с сервером B из Java скрипта. |
Автор: Alx 1.4.2006, 23:46 | ||
о Боги, нет!))) народовские страницы не возвращают not found! они возвращают дефолтовую страницу! там написано что страница не найдена. поэтому тут как раз подходит просто поискать file_get_contents()'ом слова той деволтовой страницы. проблема решена! всем спасибо!))))) ![]() |
Автор: Aliance 2.4.2006, 17:25 |
Пометить как решённый |
Автор: Alx 2.4.2006, 18:33 |
Есть: пометить, как решеный ![]() |
Автор: S.A.P. 2.4.2006, 19:54 |
Ужос. Alx, дружеский совет: на досуге поискать в интернете: 1. Что такое заголовки и какие заголовки в каких ситуациях сервер возвращает. 2. Что такое HEAD запрос, где он применяется и чем отличается от GET запросов. 3. Почему нужно использовать fsockopen вместо file_get_contents для получения информации с другого узла. ну и еще вот это статейку http://premshree.livejournal.com/66129.html?thread=881233 на закуску. |
Автор: Alx 2.4.2006, 22:35 |
S.A.P., ты меня не понимаешь))))) |
Автор: Ciber SLasH 2.4.2006, 23:12 |
Парни, вроде вопрос уже решён, что ещё требуется? ![]() |