информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach