Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2012, 19:13   #1
Andrey2011a
форматирую диск С:
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 13
Вопрос не авторизует на сайте

читал на форуме много тем авторизации на сайте
но никак не могу авторизоваться на одном сайте

прилагаю исходник

прошу гуру посмотреть и объяснить мне мою ошибку
я уже кучу тем пересмотрел и на єтом форуме и на других но увы
не помогло решил спросить напрямую

PHP код:
[CODE]
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsIdBaseComponentIdComponentIdTCPConnectionIdTCPClient,
  
IdHTTPStdCtrlsOleCtrlsSHDocVwExtCtrlsXPManComCtrls,
  
IdCookieManager;

type
  TForm1 
= class(TForm)
    
Button1TButton;
    
Timer1TTimer;
    
Button2TButton;
    
Memo2TMemo;
    
XPManifest1TXPManifest;
    
Memo1TMemo;
    
Button3TButton;
    
IdHTTP1TIdHTTP;
    
Edit1TEdit;
    
Edit2TEdit;
    
procedure Button1Click(SenderTObject);
    
procedure Timer1Timer(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;
 
sylka,perempagec:string;
param_post:TStringList;    per:integer;
f:textfile;
implementation

{$R *.dfm}
 function 
Find(const SPstring): Integer;
var
  
ijInteger;
begin
  Result 
:= 0;
  if 
Length(P) > Length(Sthen
    
Exit;
  for 
:= 1 to Length(S) - Length(P) + do
    for 
:= 1 to Length(P) do
      if 
P[j] <> S[1then
        
Break
      else if 
Length(Pthen
      begin
        Result 
:= i;
        Exit;
      
end;
end;

procedure TForm1.Button1Click(SenderTObject);

begin
idhttp1
.HandleRedirects:=true;
try
param_post:=TStringList.Create;
param_post.Add('user=testuser');
param_post.Add('password=test194');
param_post.Add('rem=1');
param_post.Add('a=2');
param_post.Add('ajax=2');

memo2.text:=UTF8Decode(idhttp1.post('http://corefir.ucoz.ru/index/sub/',param_post));
pagec:=memo2.text;
memo1.lines.Add(UTF8Decode(idhttp1.ResponseText));
per:=Find(pagec'window.location.href=') ;
perem:=pagec[per+28]+pagec[per+29]+pagec[per+30]+pagec[per+31]+pagec[per+32]+pagec[per+33]+pagec[per+34];
memo1.Lines.Add('http://corefir.ucoz.ru/'+perem);
idhttp1.Host:='s104.ucoz.net';
idhttp1.Request.UserAgent:='Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.60';

idhttp1.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
//idhttp1.Request.AcceptEncoding:='gzip, deflate';
idhttp1.Request.Referer:='http://corefir.ucoz.ru/';
//Cookie    0corefiruzll=1325515213; ucvid=9kRpl1Exgt
idhttp1.Request.Connection:='Keep-Alive';
idhttp1.Request.ContentLength:=50;
idhttp1.Request.ContentType:='application/x-www-form-urlencoded';
//idhttp1.X-Requested-With    XMLHttpRequest
idhttp1.Request.Accept:='application/xml, text/xml, */*';
idhttp1.Request.ContentEncoding:='binary';
sylka:=idhttp1.get('http://corefir.ucoz.ru/'+perem);
memo2.text:=UTF8Decode(sylka);
memo1.lines.Add(UTF8Decode(idhttp1.ResponseText));
except
idhttp1
.Free;  param_post.Free;
end;


assignfile(f,'autorisRES.html');
rewrite(f);
write(f,sylka) ;
closefile(f);
end;

procedure TForm1.Timer1Timer(SenderTObject);
begin
//Button1.Click
end;

procedure TForm1.Button2Click(SenderTObject);
begin
sylka
:=idhttp1.get('http://corefir.ucoz.ru/?'+perem);
memo2.text:=UTF8Decode(sylka);
memo1.lines.Add(UTF8Decode(idhttp1.ResponseText));
end;

end.
[/
CODE
Andrey2011a вне форума Ответить с цитированием
Старый 05.01.2012, 00:14   #2
mroff
Пользователь
 
Аватар для mroff
 
Регистрация: 16.07.2011
Сообщений: 21
По умолчанию

пройти авторизацию на сайте можно и так:
на кнопке указываешь сайт который откроет
Код:
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
webbrowser1.navigate('vkontakte.ru');
end;
на 2 кнопке
Код:
procedure TForm1.BitBtn9Click(Sender: TObject);
var
i:integer;
s:string;
html_tag:variant;
begin
html_tag:=WebBrowser1.oleObject.Document.forms.item(0).elements;
for i:=0 to (html_tag.length-1) do
begin
if (html_tag.item(i).name='email') then
html_tag.item(i).value:='тут мыло!';

if (html_tag.item(i).name='pass') then
html_tag.item(i).value:='тут пароль';
end;
end;
end.
mroff вне форума Ответить с цитированием
Старый 05.01.2012, 00:19   #3
mroff
Пользователь
 
Аватар для mroff
 
Регистрация: 16.07.2011
Сообщений: 21
По умолчанию

спросишь откуда я взял значения ?
html_tag.item(i).name='email'
html_tag.item(i).name='pass'
открой сначал ту старницу где будешь авторизовываться и нажми просмотреть исходный код страницы! у меня это вк!
и там ищим строку
Код:
<input type="text" name="email" class="text" onfocus="show('quick_expire')" id="quick_email" /></div>
Код:
<input type="password" name="pass" class="text" onfocus="show('quick_expire')" id="quick_pass" /></div>
там где NAME смотри значения и заменяй под своей
mroff вне форума Ответить с цитированием
Старый 05.01.2012, 12:21   #4
Andrey2011a
форматирую диск С:
Пользователь
 
Регистрация: 19.05.2010
Сообщений: 13
По умолчанию

mroff, спасибо интересный подход
но немного не то
если использовать webbrowser в делфи то скорость авторизации будет скучня и долгая
а мне хотелось бы ускорить процесс авторизации через IdHTTP
знаю что через него можно авторизоваться но у меня по какой-то ошибке или я чего-то не учел не получается
хотелось бы чтоб раскрыли тайну неавторизации
Andrey2011a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск на сайте SpyCrypt PHP 1 20.04.2011 20:07
Регистрация на сайте. Alest Работа с сетью в Delphi 10 09.06.2010 16:10
Авторизация на сайте. Pliks Общие вопросы по Java, Java SE, Kotlin 5 08.06.2010 13:51
Авторизация на сайте doniyor Работа с сетью в Delphi 8 21.12.2009 08:33