05.11.2013, 11:22
|
Прохожий
|
|
Регистрация: 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.
|