|
#1
|
|||
|
|||
IdHTTP и капча
Здравствуйте, возникла следующая проблема:
при отправке Get запроса сервер возвращает капчу, если этот же запрос отправить из браузера то возвращается то что нужно. Т.е. сервер каким то образом определяет что запрос отправлен IdHTTP, в свойствах компонента таких как: Request.UserAgent, Request.Accept, и т.д. прописываю то же что отправляется из браузера. Подскажите как быть. |
#3
|
|||
|
|||
Цитата:
вот ссылка http://wordstat.yandex.ru/ может у кого получиться получить данные |
#4
|
||||
|
||||
копай в сторону kiks.yandex.ru, и вообще поснифай полностью деятельность браузера на этой странице. т.к. там куча JS'ок, проверяющих на "человечность".
|
#5
|
|||
|
|||
Нужно отловить куки и посылать их при последующих запросах. Можно сделать это коряво и вручную как делал я=)
Код:
HTTP := TIdHTTP.Create(nil); HTTP.AllowCookies:=false; HTTP.HandleRedirects:=false; //НЕ редиректим http.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.7.62 Version/11.01'; s := HTTP.Response.RawHeaders.text;// showmessage(s) и если что смотрим длинну своей сеткуки глазками=) я так делал))) if Pos('Set-Cookie', s) <> 0 then begin a:= copy(s, Pos('Set-Cookie', s), 60); //Здесь 60 это длинна строки с моими куками s:=''; s:=copy(a, Pos(' ', a)+1, 42); //Копируем только значение s := 'Cookie: '+s; end; HTTP.Request.CustomHeaders.text := s;//вот мы и посылаем куки вида "Cookie: 123456ваывы8798пав"=) if http.ResponseCode = 302 then //если редирект, то сами редиректим... s := http.Get('http://site.domain' + http.Response.Location); ах, да... Код:
var'ы: s, a; strings; http: TIdHTTP; lmikle: пользуемся тегами!!! Последний раз редактировалось lmikle, 24.10.2011 в 00:58. |