Indy, proxy и 400: bad request

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by xophet, 17 Apr 2011.

  1. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Code:
         
    try         
    http.ProxyParams.ProxyServer:=ip;
    http.ProxyParams.ProxyPort:=StrToInt(port);
    http.Request.UserAgent:='Mozilla/5.0 (Windows; U;Windows NT 5.1; ru; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR 3.5.30729)';
    http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    http.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
    http.Request.ProxyConnection:='keep-alive';
    http.ReadTimeout:=Form1.SpinEdit2.Value*1000;
    resp:=http.Get('http://www.ning.com');
    if ((pos(AnsiUpperCase('Create'),AnsiUpperCase(resp))<>0)or
    (pos(AnsiUpperCase('Создайте'),AnsiUpperCase(resp))<>0))
    and(pos(AnsiUpperCase('been blocked'),AnsiUpperCase(resp))=0) then
    form1.Memo2.Lines.Add(ip+':'+port);
    except
    end;
    
    При коннекте Indy через Proxy вылазит ошибка: "400: bad request".
    при этом с сайтом ya.ru все работает нормально, но мне нужно проверять именно через ning.com
    примерно из 700 проксей рабочими моя прога показывает 9, на остальных "bad request", хотя ручками через FireFox если проверять их гораздо больше получается.

    Если нужны какие-то доп данные, там логи обмена, пример или еще что-то только скажите, сразу организую. Уже больше суток бьюсь над этим местом, инет перерыл... нигде ничего.
     
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    проснифай что именно посылается. лог сюда выложи, там поглядим
     
  3. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Попробуй вместо keep-alive - close

    Это ужасно, очень
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Коннект к прокси
    Code:
    (Request-Line):
    CONNECT www.ning.com:80 HTTP/1.1
    Pragma:no-cache
    Proxy-Connection:keep-alive
    Host:www.ning.com
    Accept:text/html, */*
    User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR 3.5.30729)
    
    ответ прокси:
    Code:
    (Status-Line):
    HTTP/1.0 200 Connection established
    
    Сам запрос
    Code:
    (Request-Line):
    GET http://www.ning.com/ HTTP/1.1 
    Proxy-Connection:keep-alive 
    Host:www.ning.com 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; U; Windows NT 5.1; ru; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR 3.5.30729)
    
    Ответ сайта:
    Code:
    (Status-Line):
    HTTP/1.1 400 Bad Request 
    X-XN-Trace-Token:b055923f-9d18-4400-8190-5ae74e7ade54 
    Server:Ning HTTP Server 2.0 
    Expires:Thu, 01 Jan 1970 00:00:00 GMT
    Set-Cookie:xn_visitor=f47bd9bc-e6fe-4b74-b825-95a164d81ba2;Path=/;Domain=.ning.com;Expires=Wed, 14-Apr-21 18:00:13 GMT
    Set-Cookie:ning_session="n2mHxQZ+NbJ87rG4RaGgoYXwubY77e2XEunQ7sYhKHMR5O74Xf62MT2SeQ1s+d200mLrN/CI4Q0=";Path=/;Domain=.ning.com;Expires=Sun, 17-Apr-11 19:00:13 GMT 
    Cache-Control:no-cache 
    Content-Length:1206 
    Content-Type:text/html
     
  5. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    попробовал, ничего не поменялось.
    Внял, исправлюсь. много менять придется (у меня есть еще один проект, который начинался с маленькой программки, а разросся до ппц (по моим меркам), и теперь остро встала проблема повышения производительности. Вот с этого и начну :)
     
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ты юзаешь прокси через HTTP Connect/ В таком случае ты должен посылать потом уже нормальны запрос, а не HTTP PROXY
    так что юзай или одно или другое. Покопайся в настройках прокси. Или мож это просто глюк компонента
     
  7. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Http.connect я не юзаю.
    честно говоря даже не знаю, что это! :(
    Тот же самый код с яндексом (точнее с ya.ru) работает нормально (единственное что меняю, это название сайта ning.com на ya.ru).
    Proxy юзаю чужие, так что в настройки залезть не смогу.
    Сейчас прийду на работу, попробую синапс найти и под него прогу переделать, хотя синапса и не знаю...
     
  8. seosimf

    seosimf Member

    Joined:
    3 Mar 2011
    Messages:
    271
    Likes Received:
    44
    Reputations:
    6
    Ну во первых добавь CRLF после Host(а то Accept и Host в одной строке выходят):
    во вторых попробуй указать HTTP поле Host:www.ning.com аккурат после запроса страницы, например у aol ели так не сделать выдает тоже Bad Request.