Показать сообщение отдельно
  #4  
Старый 05.11.2013, 11:22
Harima Hario Harima Hario вне форума
Прохожий
 
Регистрация: 28.02.2011
Сообщения: 27
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Значит они явно не случайные.
Вообще, я чего-то не вижу где они д.б. Ну и тяжко разбираться, украинским не сильно владею...
Иначе бы написанная мною программа работала

Тут даже дело вот в чем: если сравнить два исходных кода стартовой страницы в разное время (после обновления) – соответствие 100% то есть ни одного символа так и не изменилось, но значения order.x и order.y ведь где-то берутся… сайт не очень замысловатый, не думаю, что там имеются какие-то дополнительные методы защиты…

Вот мой код, может кто-то там увидит ошибку:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdSSLOpenSSL, httpsend, ssl_openssl,
  OleCtrls, SHDocVw, synacode, synautil, Gauges, ExtCtrls, ComCtrls, Grids;

type
  TForm1 = class(TForm)
    btn1: TButton;
    mmo3: TMemo;
    edt1: TEdit;
    mmo5: TMemo;
    lbl1: TLabel;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function FoundLocationStrNum(Headers: TStringlist): integer;
var
  FoundStrPos, i: integer;
begin
  Result := -1;
  for i := 0 to Headers.Count do
  begin
    FoundStrPos := Pos('Location: ', Headers.Strings[i]);
    if FoundStrPos > 0 then
    begin
      Result := i;
      exit;
    end;
  end;
end;

function GetHTTPStr(http: THTTPSend): string;
var
  BodyStream: TStringStream;
  BodyS: TStringList;
begin
  try
    BodyS := TStringList.Create;
    BodyStream := TStringStream.Create(result);
    begin
      BodyS.LoadFromStream(http.Document);
      result := BodyS.Text;
    end;
  finally
    BodyStream.Free;
    BodyS.Free;
  end;
  http.Document.Seek(0, soFromBeginning);
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  httpsend: THTTPSend;
  stream: TStringStream;
  link1, result, NewURL: string;
  n: integer;
  Res: boolean;

  begin
      httpsend:=THTTPSend.Create;
      httpsend.AddPortNumberToHost:= False;
      httpsend.HTTPMethod('get', 'http://brain.kiev.ua');
      Application.ProcessMessages;
      mmo3.Lines.LoadFromStream(httpsend.Document);
      Application.ProcessMessages;

      stream := TStringStream.Create('');

      stream.WriteString('swords='+edt1.Text+'+&order.x=11&order.y=14');

      Application.ProcessMessages;
      httpsend.Clear;
      httpsend.MimeType := 'application/x-www-form-urlencoded';
      httpsend.Document.LoadFromStream(stream);
      Res := httpsend.HTTPMethod('post', 'http://brain.kiev.ua/index.php?30&backPID=45');
      Application.ProcessMessages;
      result:=IntToStr(httpsend.ResultCode);

      if result = '302' then
      begin
        lbl1.Caption:='Получилось';
        Application.ProcessMessages;
      end;

      if result <> '302' then
      begin
        lbl1.Caption:='Не получилось';
        Application.ProcessMessages;
//        mmo5.Clear;
        Application.ProcessMessages;
      end;


  if Res then
    case httpsend.ResultCode of
      301, 302, 307:
        begin
          n := FoundLocationStrNum(httpsend.Headers);
          if (n >= 0) and (n <= httpsend.Headers.count) then
          begin
            NewURL := StringReplace(httpsend.Headers.Strings[n], 'Location: ', '', []);
            Application.ProcessMessages;
            httpsend.Clear;
            httpsend.HTTPMethod('GET', NewURL);
            Application.ProcessMessages;
            mmo5.Lines.Text := GetHTTPStr(httpsend);
            Application.ProcessMessages;
          end;
        end;
    end;
  end;
end.
Ответить с цитированием