информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[C++] Плиз помогите начинающему разбираться в сетях. 24.03.02 01:57  
Автор: Yuri Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Пытаюсь слить НТМЛ страницу с сервера, но с некоторых серверов все сливается отлично, а с некоторых я получаю ошибку 302 (мол сайт временно удален) захожу тутже на эту страницу через нетскейп, все нормально страница есть, а моя прога получает от сервера ошибку. ниже я привожу выдержки из моей проги, подскажите что я забыл учесть?

я упускаю в тексте проги все проверки на нудавшийся коннект, чтобы сократить размер.
---------------
//сздаю сокет и соединяюсь с удаленной машиной
struct sockaddr_in sock_name;
struct hostent *hptr=NULL;

hptr = gethostbyname("hostname");
memcpy(&sock_name.sin_addr, hptr->h_addr, hptr->h_length);
sock_name.sin_family = AF_INET;
sock_name.sin_port = htons(port);

*sock = socket(AF_INET, SOCK_STREAM, 0);
connect(*sock, (struct sockaddr *) &sock_name, sizeof (sock_name))

//создаю буфер для запроса, выделяю под него память... и заполняю его данными. думаю поназваниям переменных понятно какими.
sprintf(request, "GET %s HTTP/1.0\r\n%s%sHost: %s:%d\r\n%s%s%s%s%s%s%s%s%s\r\n",
URL,
proxy_connection ? proxy_connection : "",
user_agent ? user_agent : "",
urlhost, urlport,
accept ? accept : "",
referer ? referer : "",
accept_encoding ? accept_encoding : "",
accept_language ? accept_language : "",
accept_charset ? accept_charset : "",
ua_pixels ? ua_pixels : "",
ua_color ? ua_color : "",
ua_os ? ua_os : "",
ua_cpu ? ua_cpu : "" );

//отсылаю сформированный запрос серверу.
do
{ res = WRITE(sock, request, strlen(request));
} while (res == -1 && errno == EINTR);

Data = (char *) malloc (100000);
//Читаю ответ сервера
res = READ(sock, Data, strlen(Data));

------------------
Ответ от сервера приходит всегда, но почемуто от некоторых приходит не страница а 302-я ошибка хотя страница в полном порядке лежит на сервере. Это чаще всего происходит когда я обращаюсь не к HTML странице а к скрипту формирующему HTML страницу.
Почему это происходит? И как этого избежать???

Заранее благодарен за любую помощ.
[C++] Плиз помогите начинающему разбираться в сетях. 24.03.02 03:31  
Автор: Biasha <Бяша> Статус: Member
Отредактировано 24.03.02 03:33  Количество правок: 1
<"чистая" ссылка>
Думаю у тебя ошибка в запросе - проверь его
> //сздаю сокет и соединяюсь с удаленной машиной
> struct sockaddr_in sock_name;
> struct hostent *hptr=NULL;
>
> hptr = gethostbyname("hostname");
> memcpy(&sock_name.sin_addr, hptr->h_addr,
> hptr->h_length);
> sock_name.sin_family = AF_INET;
> sock_name.sin_port = htons(port);
>
> *sock = socket(AF_INET, SOCK_STREAM, 0);
> connect(*sock, (struct sockaddr *) &sock_name, sizeof
> (sock_name))
>
> //создаю буфер для запроса, выделяю под него память... и
> заполняю его данными. думаю поназваниям переменных понятно
> какими.
> sprintf(request, "GET %s HTTP/1.0\r\n%s%sHost:
> %s:%d\r\n%s%s%s%s%s%s%s%s%s\r\n",
> URL,
Ну не совсем это URL - только имя файла, а не весь URL
> proxy_connection ? proxy_connection : "",
> user_agent ? user_agent : "",
> urlhost, urlport,
> accept ? accept : "",
> referer ? referer : "",
> accept_encoding ? accept_encoding : "",
> accept_language ? accept_language : "",
> accept_charset ? accept_charset : "",
> ua_pixels ? ua_pixels : "",
> ua_color ? ua_color : "",
> ua_os ? ua_os : "",
> ua_cpu ? ua_cpu : "" );
Тут и посмотри значение request
>
> //отсылаю сформированный запрос серверу.
> do
> { res = WRITE(sock, request, strlen(request));
> } while (res == -1 && errno == EINTR);
>
> Data = (char *) malloc (100000);
> //Читаю ответ сервера
> res = READ(sock, Data, strlen(Data));
[C++] Плиз помогите начинающему разбираться в сетях. 24.03.02 02:34  
Автор: ih8u <i hate you> Статус: Member
<"чистая" ссылка>
Чо то у тебя какой-то запрос странный,
надо то всего:
GET /file HTTP/1.1\r\n
Host: www.server.com\r\n
\r\n

И всё, можно ещо юзер агента засунуть,
а так и этого хватает
[C++]Что-то неполучается, Как должен правильно выглядеть запрос для такого случая? 24.03.02 12:37  
Автор: Yuri Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Чо то у тебя какой-то запрос странный,
> надо то всего:
> GET /file HTTP/1.1\r\n
> Host: www.server.com\r\n
> \r\n
Попробовал так как ты сказал но всеравно как и в моем случае часть сайтов проходит великолепно а часть нет. Может для некоторых сайтов нужны какието особые поля в запросе?
Обьясните пожалуйста на примере. Вот например этот линк моей программе возвращает 302-ю ошибку. Хотя в любом браузере проходит без проблем.
http://www.lustcomics.com/cgi-bin/topsites.cgi
Как правлино должен выглядеть запрос для этого конкретного URL-а
[C++] Да все нормально 24.03.02 13:43  
Автор: :-) <:-)> Статус: Elderman
Отредактировано 24.03.02 14:23  Количество правок: 2
<"чистая" ссылка>
Вот что происходит в твоем случае:

1) MSIE 5.0 делает запрос:
GET /cgi-bin/topsites.cgi HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,/
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: MSIE 5.0
Host: www.lustcomics.com
Connection: Keep-Alive

2) А сервер ему и отвечает:
HTTP/1.1 302 Moved Temporarily
Server: Zeus/3.4
Date: Sun, 24 Mar 2002 11:15:45 GMT
Connection: close
Location: http://www.lustcomics.com/top/index.html

3) MSIE все понял и делает следущий запрос:
GET /top/index.html HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,/
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: MSIE 5.0
Host: www.lustcomics.com
Connection: Keep-Alive

4) И сервер возвращает нужную страничку:
HTTP/1.1 200 OK
Server: Zeus/3.4
Date: Sun, 24 Mar 2002 11:15:46 GMT
Content-Length: 56264
Content-Type: text/html
Last-Modified: Sun, 24 Mar 2002 11:12:12 GMT

<HTML><HEAD><TITLE>Best free cartoon, comics, anime sites.</TITLE>
<script language="JavaScript"> <!--
defaultStatus="Best free cartoon, comics, anime sites.";
--></script>... дальше пошел HTML-текст ...
Всем огромное спасибо. все получилось. 25.03.02 00:08  
Автор: Yuri Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach