Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Http

246
24 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Хочу вот получить страничку по HTTP. Беру TClientSocket ... теперь вопрос - чего куда втыкать? Прокси, прокси порт, порт HTTP?
Если ставлю в ClientSocket->Host = "ps.proxy.ru"; ClientSocket->Port = 3128;

А в OnConnect делаю так, то нифига не выходит. Куда впердолить 80?
void __fastcall TForm1::ClientSocketProxyConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
String Request("GET / HTTP/1.0\r\n\
Host: codenet.ru\r\n\
Proxy-Authorization: Basic ");
Request = Request + Base64Encode("user:password") + String("\r\n\r\n");

Socket->SendBuf(Request.c_str(), Request.Length());
}

Спецы по WinSock есть? HELP однако!
246
25 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by GIZMO
ОЧЕНЬ хочу вот получить страничку по HTTP.



Код:
...
ClientSocket->Host = "ps.myproxy.ru"; ClientSocket->Port = 3128;
...
void __fastcall TForm1::ClientSocketProxyConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    String Request("GET http://www.codenet.ru HTTP/1.0\r\n\
                   Host: codenet.ru\r\n\
                   Proxy-Authorization : Basic wyu43h3jh4isyhuy=\r\n\r\n");
   

    Socket->SendBuf(Request.c_str(), Request.Length());
}


407 и 3.14здец. Что делать?
2.3K
25 октября 2005 года
ART-CODE
134 / / 15.11.2004
Выходишь в интернет через прокси ? А Какой прокси ?
И какой способ авторизации на прокси включен ?
Есть разные способы авторизации... (Java - консоль,определение IP, определение MAC,если на машине пользователя ставится клиент от проксика, то может учитываться и имя программы запрашивающей данные и имя сеанса на компьютере пользователя и т.д. и т.п. ...)
У тебя там точно Basic работает ?

Конечно лучше всего перехватить траффик от Explorer, работающего через этот твой прокси
и посмотреть на заголовки HTTP
Например при помощи TCPLogger.exe или ей подобной...

А вообще запрос выглядит так
 
Код:
GET http://www.mail.ru/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
Host: mail.ru
Proxy-Connection: Keep-Alive

Если нужен другой порт , то пишем так
 
Код:
Host: mail.ru:8181

Обрати особое внимание на синтаксис первой строки
и на строку "Proxy-Connection"
Удачи.
246
26 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ART-CODE
Выходишь в интернет через прокси ? А Какой прокси ?


Не знаю. Как узнать можно?

Цитата:
Originally posted by ART-CODE

И какой способ авторизации на прокси включен ?
Есть разные способы авторизации... (Java - консоль,определение IP, определение MAC,если на машине пользователя ставится клиент от проксика, то может учитываться и имя программы запрашивающей данные и имя сеанса на компьютере пользователя и т.д. и т.п. ...)


Тоже хз. Вот, что шлет IE:

 
Код:
GET http://www.codenet.ru/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Cookie: bbuserid=8513; bbpassword=3c97d40199689b24f1db45b81f3f95b8; cnstid=1407739433; bblastvisit=1129700111
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: codenet.ru
Proxy-Connection: Keep-Alive

а потом, похоже после запроса имени и пароля:
 
Код:
GET http://www.codenet.ru/ HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
Cookie: bbuserid=8513; bbpassword=3c97d40199689b24f1db45b81f3f95b8; cnstid=1407739433; bblastvisit=1129700111
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: codenet.ru
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic YtGJjK3j24h4kajfYT==



Цитата:
Originally posted by ART-CODE

У тебя там точно Basic работает ?


TCP_Logger показывает, что - ДА.

Ставлю ClientSocket->Host = ps.myproxy.ru, Port(proxy)=3128 и засылаю такой запрос в OnConnect:

Код:
void __fastcall TForm1::ClientSocketProxyConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    String Request1("GET http://www.codenet.ru/ HTTP/1.0\r\n\
        Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*\r\n\
        Accept-Language: ru\
        Cookie: bbuserid=8513; bbpassword=3c97d40199689b24f1db45b81f3f95b8; cnstid=1407739433; bblastvisit=1129700111\
        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n\
        Host: codenet.ru\r\n\
        Proxy-Connection: Keep-Alive\r\n\
        Proxy-Authorization: Basic YTrgfjhjG7%djfh==\r\n\r\n");

    Socket->SendBuf(Request.c_str(), Request.Length());
}
//---------------------------------------------------

а он мне:
Код:
HTTP/1.0 407 Proxy Authentication Required
Server: squid/2.5.STABLE7
Mime-Version: 1.0
Date: Wed, 26 Oct 2005 09:02:05 GMT
Content-Type: text/html
Content-Length: 1298
Expires: Wed, 26 Oct 2005 09:02:05 GMT
X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0
Proxy-Authenticate: Basic realm="Proxy-caching server LNPP"
X-Cache: MISS from ps2.laes.ru
Proxy-Connection: close

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: Cache Access Denied</TITLE>
<STYLE type="text/css"></STYLE>
</HEAD>
<BODY>
<H1>ERROR</H1>
<H2>Cache Access Denied</H2>
<HR noshade size="1px">



While trying to retrieve the URL:
http://www.codenet.ru/



The following error was encountered:
<UL>
<LI>

Cache Access Denied.
[/list]</P>



Sorry, you are not currently allowed to request:
<PRE>    http://www.codenet.ru/</PRE>
from this cache until you have authenticated yourself.
</P>




You need to use Netscape version 2.0 or greater, or Microsoft Internet
Explorer 3.0, or an HTTP/1.1 compliant browser for this to work.  Please
contact the [email="webmaster"]cache administrator[/email] if you have
difficulties authenticating yourself or
change your default password.
</P>

<BR clear="all">
<HR noshade size="1px">
<ADDRESS>
Generated Wed, 26 Oct 2005 09:02:05 GMT by ps2.laes.ru (squid/2.5.STABLE7)
</ADDRESS>
</BODY></HTML>


чего-то Я притупляю, А?
2.3K
26 октября 2005 года
ART-CODE
134 / / 15.11.2004
Описание твоего прокси - сервера
http://squid.opennet.ru/

А может просто забыл поставить несколько переводов строк ?
Вот испр. вариант.
 
Код:
String Request1("GET http://www.codenet.ru/ HTTP/1.0\r\n\
        Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*\r\n\
        Accept-Language: ru\r\n\
        Cookie: bbuserid=8513; bbpassword=3c97d40199689b24f1db45b81f3f95b8; cnstid=1407739433; bblastvisit=1129700111\r\n\
        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n\
        Host: codenet.ru\r\n\
        Proxy-Connection: Keep-Alive\r\n\
        Proxy-Authorization: Basic YTrgfjhjG7%djfh==\r\n\r\n");

А еще - уточни - может сначала нужно послать запрос без строки "Proxy-Authorization", а
после этого в ответ на требование авторизваться
уже дослать запрос , содержащий пароль ?
Вопрос вот какой: в отдельном соединении выполнять
1-ый (без пароля) и 2-ой (с паролем) заросы или
выполнить их последовательно - в одном
соединении ? Нужно провести пару экспериментов.
246
27 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ART-CODE

А может просто забыл поставить несколько переводов строк ?


Нет. С этим вроде все нормально. Твой(исправленный) вариант тоже не работает.

Цитата:
Originally posted by ART-CODE

А еще - уточни - может сначала нужно послать запрос без строки "Proxy-Authorization", а
после этого в ответ на требование авторизваться
уже дослать запрос , содержащий пароль ?


Тоже об этом думал, но как это реализовать и где??? OnRead?

Цитата:
Originally posted by ART-CODE

Вопрос вот какой: в отдельном соединении выполнять
1-ый (без пароля) и 2-ой (с паролем) заросы или
выполнить их последовательно - в одном
соединении ? Нужно провести пару экспериментов.


Без разницы можно и в одном соединении

246
31 октября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by GIZMO
Нет. С этим вроде все нормально. Твой(исправленный) вариант тоже не работает.


записал в одну строчку и - 200 OK
ART_CODE персональное спасибо за участие!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог