Внимание! В связи с устареванием топика эта страница была взята из кэша.
|
Sven
Зарегистрирован: 17.10.02
Сообщения: 55
|
Добавлено: 16/11/03 в 01:36
|
|
А можно как-нибудь желательно на php проверить: 1. работает-ли ссылка (т.е. открывается-ли по ней вообще что-нибудь)? 2. ведет-ли она туда куда и указывает или редиректит на 404? имеется большая база ссылок и хочется оттуда все мертвые отсеять.
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 1377
|
Добавлено: 16/11/03 в 01:46
|
|
У меня есть бальшущий класс специально для работы ПХП в режиме браузера. Никак не доходят руки до ума довести и выложить на Open Source.
Ну а вообще, делаешь так.
Проверяем ссылку http://google.com/folder/document.htm
1. fsockopen - открываешь соединение к хосту google.com 2. fputs - посылаем запрос HEAD:
Код: | HEAD /folder/document.htm HTTP/1.1 (здесь \r\n\r\n) |
3. fgets - читаем ответ. Если он начинается не так (цифра отлична от 200): (вместо Ок может быть что-то другое, главное цифра 200), то значит лажа. 4. закрываем сокет.
И ... читаем спецификацию протокола HTTP в RFCне_помню_какой. :-)
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 16/11/03 в 19:03
|
|
RFC2616
|
K началу
|
|
|
Stek
Зарегистрирован: 24.10.02
Сообщения: 719
|
Добавлено: 16/11/03 в 19:43
|
|
блин, как я обожаю такие содержательные ответы. Вот незнают что написать, то обязательно вбубенять код рфц, или вообще ртфм - и сидят довольные своей крутостью.
www.hotscripts.com - берем любой линкчекер и смотрим как он это делает.
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 16/11/03 в 20:10
|
|
Stek писал: | блин, как я обожаю такие содержательные ответы. Вот незнают что написать, то обязательно вбубенять код рфц, или вообще ртфм - и сидят довольные своей крутостью. |
Это в мой огород камень? Я номер RFC написал в дополнение к посту Pentarh, который все что можно было разъяснил. У него, если кто-то не заметил, было упоминание соответствующего документа rfc, только без номера. А документ между прочим архиполезный для любого, кто заиимается веб-ботами и автоматизацией веба. Поэтому давай-ка научимся читать чужые посты и не варнякать.
|
K началу
|
|
|
Stek
Зарегистрирован: 24.10.02
Сообщения: 719
|
Добавлено: 16/11/03 в 20:43
|
|
Поэтому давай ка лучше научимся давать линки на то, на что ссылаемся, а не выдать просто параграф
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 16/11/03 в 22:12
|
|
http://www.w3.org/Protocols/rfc2616/rfc2616.html
|
K началу
|
|
|
Sven
Зарегистрирован: 17.10.02
Сообщения: 55
|
Добавлено: 17/11/03 в 00:25
|
|
спасибо всем, особенно Pentarh пишу скрипт, вроде все начинает работать.
|
K началу
|
|
|
Jam
Зарегистрирован: 01.10.03
Сообщения: 221
|
Добавлено: 17/11/03 в 01:08
|
|
Как раз вопрос в эту тему. Получаю ответ от сервака, он мне скидывает страницу, а нужно только узнать что HTTP 200....можно ли коннект отрубить по приходу заголовка HTTP 200 ?
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 1377
|
Добавлено: 17/11/03 в 02:58
|
|
Jam писал: | Как раз вопрос в эту тему. Получаю ответ от сервака, он мне скидывает страницу, а нужно только узнать что HTTP 200....можно ли коннект отрубить по приходу заголовка HTTP 200 ? |
При запросе типа HEAD, сервер посылает в ответ только заголовки HTTP, в отличии от запроса GET или POST, где вслед за заголовками идет запрашиваемый документ полностью. Т.е. отрубать связь при получении первой строчки нет смысла, т.к. этих строчек всего будет штук пять-десять (т.е. мало).
Для тех, кто делает первые шаги в этом деле и пробует перепарсить ответ на GET или POST, поделюсь своими шишками. Есть такой формат кодировки тела ответа сервера, как
Код: | Transfer-encoding: chunked |
Так вот. Если в ответе присутствует этот хэадер, то в теле ответа имеют место "лишние" (не относящиеся к документу) байты. Как расшифровать, можно опять же почитать в RFC, если не поймете, запостите вопросик, я отвечу (много писать надо).
2Stek: готовое оно конечно хорошо, только вот если человек сам в этом раздуплится, то намного полезнее будет.
|
K началу
|
|
|
Jam
Зарегистрирован: 01.10.03
Сообщения: 221
|
Добавлено: 17/11/03 в 15:37
|
|
не стоит писать то что много раз написано гугл поможет http://starcat.dp.ua/doc/wdh/http.htm полезная для новичков статья, одна из многих, которые можно самому найти... а то на чём споткнулись лучше написать ведь на чужих ошибках учатся
Код: | Transfer-encoding: chunked |
надо посмотреть в своих ответах, но пока вроде всё работает эти "лишние" символы где появляются? и собсно что это за символы заранее благодарен P.S. а HEAD - как раз то, что нужно thanks! P.P.S. кому интересно RFC 2068 на русском http://www.helloworld.ru/texts/comp/inet/http/http1/index.htm
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 1377
|
Добавлено: 18/11/03 в 13:12
|
|
Ну попробую простыми словами описать главу 3.6 RFC2616:
chunk - это "кусок" тела HTTP-ответа.
Так вот. Тело ответа в этом случае делится на "чанки" - куски. Если в обычном Transfer-Encoding тело идет непрерывно, т.е. документ как он есть, то в "чанковом" случае, документ дет так:
длинна_куска_в_16_ричном_формате\r\n кусок_ответа длинна_куска_в_16_ричном_формате\r\n кусок_ответа ..... \0
Например:
Код: | 1a <HTML><HEAD><TITLE>Hello w 4 orld \0
|
Hope this helps
|
K началу
|
|
|
Jam
Зарегистрирован: 01.10.03
Сообщения: 221
|
Добавлено: 18/11/03 в 15:20
|
|
помогло, ещё раз сенькс
|
K началу
|
|
|
Jam
Зарегистрирован: 01.10.03
Сообщения: 221
|
Добавлено: 20/11/03 в 16:38
|
|
2 Sven ищи PHP Kung Foo Link Checker сделай страницу со всеми линками и натрави чекер на страницу, всё покажет всё расскажет )
|
K началу
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
Внимание! В связи с устареванием топика эта страница была взята из кэша.
|