idHttp и отправка КУКИ в сервер
, idHttp и отправка КУКИ в сервер
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.37] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы
idHttp и отправка КУКИ в сервер
, idHttp и отправка КУКИ в сервер
|
Сообщ.
#1
,
|
|
|
|
Добрый день. Есть следующий код(поток):
![]() ![]() function TLoader.LoadSearchPage(const Reqest:string):string; const SMUrl = 'http://nova.rambler.ru/search?query='; //UrlEnd ='&pagelen=50'; UrlEnd ='&dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&pagelen=50&adult=soft'; var FullUrl:string; begin FIdHttp:=TidHttp.Create(nil); FSSL:=TIdSSLIOHandlerSocketOpenSSL.Create; FCookie:=TIdCookieManager.Create; try try FIdHttp.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0'; FIdHttp.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'; //FIdHttp.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.3'; FIdHttp.Request.Connection:='Keep-Alive'; (*???*) FIdHttp.Request.ContentType:='text/html'; (*???*) FIdHttp.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; FIdHttp.HandleRedirects := True; FIdHttp.ConnectTimeout:=50000; FIdHttp.ReadTimeout:=50000; FIdHttp.AllowCookies:=True; FIdHttp.IOHandler:=FSSL; FIdHttp.CookieManager:=FCookie; FullUrl:=(SMUrl+Reqest+UrlEnd); Result:=AnsiLowerCase(FIdHttp.Get(FIdHttp.URL.URLEncode(FullUrl))); except Result:='Error Loadind Page'; Exit; end; finally FreeAndNil(FIdHttp); FreeAndNil(FSSL); FreeAndNil(FCookie); end; end; вроде бы все работает, но Мурзилла в сервер отсылает следующее: GET /search?dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&adult=soft&pagelen=50&query=%D0%B7%D0%B0%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BA%D0%B0+%D0%B4%D1%80%D0%BE%D0%B2+%D0%BD%D0%B0+%D0%B7%D0%B8%D0%BC%D1%83 HTTP/1.1 Host: nova.rambler.ru User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 Referer: http://nova.rambler.ru/search?dlang=0&mime...%B8%D0%BC%D1%83 Cookie: ruid=9l4ABpCeR1BGIgAAAc5i3wB=; dvr=gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:1368360797; lvr=1368363315; xtvrn=$514210$; xtan=-; xtant=1; __utma=21227320.1028535311.1367572614.1367572614.1367572614.1; __utmz=21227320.1367572614.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); dv=gUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:1368360797; nlv=1368365221; __utma=112620571.1826725587.1367572618.1367759211.1368360808.3; __utmz=112620571.1367759211.2.2.utmcsr=nhp|utmccn=(not%20set)|utmcmd=(not%20set); top100rb=NzQ2KzQ5KzEwNQ==; __utmc=21227320; __utmc=112620571; spravka=d тогда как загрузчик на idHTTP в сервер шлет: GET /search?query=%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D1%82%D0%B2%D0%BE%20%D0%B4%D0%B0%D1%87%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%BE%D0%BC%D0%B8%D0%BA%D0%B0%20%D0%BC%D0%BE%D1%81%D0%BA%D0%B2%D0%B0&dlang=0&mimex=0&st_date=&end_date=&news=0&limitcontext=0&exclude=&filter=&sort=3&pagelen=50&adult=soft HTTP/1.1 Connection: Keep-Alive Content-Type: text/html; charset=ISO-8859-1 Host: nova.rambler.ru Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: identity Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ заметно что загрузчик забыл отослать Referer и Cookie в прынципе наверно Referer не очень то и нужно? а вот без Cookie можно очень скоро получить БАН от поисковика Внимание! Вопросы: 1. так ли нужны Referer и Cookie? (вопрос для тех кто хакал поисковики) 2. как все же запихнуть в поисковик Cookie(использовать POST+СПИСОК вместо GET?) |
|
Сообщ.
#2
,
|
|
|
|
а это что?
FIdHttp.CookieManager:=FCookie; вопросы немного не об этом |
|
Сообщ.
#3
,
|
|
|
|
Pcrepair,Разве КукиМенеджер автоматически не отправляет(добавляет в тело запроса) однажды сохраненные куки?
|
|
Сообщ.
#4
,
|
|
|
|
получается что нет, это кстати мой вопрос
|
|
Сообщ.
#5
,
|
|
|
|
Pcrepair,А после загрузки страницы список куки пуст(idHttp1.CookieManager.CookieCollection.Count=0)?
|
|
Сообщ.
#6
,
|
|
|
|
а вот это еще проверить нужно, прийдется сделать простой вариант без потока и все на нем препарировать
|
|
Сообщ.
#7
,
|
|
|
|
Pcrepair,Конечно ,я ,например, стараюсь каждую функцию проверять отдельно от основного проекта . Потом собирается мусор,объем которого больше за объем основного проекта ^^
В противном случае, можно будет оперировать куками напрямую ,через парсинг посылаемого пакета\ответа сервера. Ну и традиционно , я советую вам использовать сокеты вместо Инди ,как более кошерный и простой ,как по мне , способ обработки Интернет запросов и ответов.Тем более МСДН предлагает вам готовые симплы ,которые иллюстрируют работу базовых функций send/recv(пруф : http://msdn.microsoft.com/en-us/library/wi...9(v=vs.85).aspx ) |
|
Сообщ.
#8
,
|
|
|
|
Цитата Protector @ сокеты вместо Инди Для HTTP не кошерно как раз, придется много всего руками писать |
|
Сообщ.
#9
,
|
|
|
|
Прежде чем снифать Браузер, надо очистить кеш\куки и т.п.
тогда при "первом" запросе не будет ни чего лишнего и не будет лишних вопросов.. |