key kodları web için geçersiz mi?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ElectroNick
Üye
Mesajlar: 119
Kayıt: 05 Oca 2005 04:39

key kodları web için geçersiz mi?

Mesaj gönderen ElectroNick »

s.a.
bir butona tıklandığında bir web formuna (diyelim ki bir oyunun login formuna (ben http://www.ogame.com.tr için kullanmaya çalışıyorum)) kullanıcı adı ve şifrenin yazdırılması için şöyle bir yöntem denedim.. kullanıcı adı soran yere ekrandaki koordinatlarını bularak mouseu SetCursorPos(25, 30); komutu ile yolladım.. ardından tıklama efekti için mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); kullandım.. kullanıcı adımın key kodlarını keybd_event(ord(67), MapVirtualKey(ord(67), 0), 0, 0); vb. kullanarak klavyeden yazılıyormuş gibi giriş yaptırmak istedim..

sorunum şu kullanıcı adımı doğru yazdığı halde şifre kısmını doğru yazmıyor.. herhangi bir edit ya da memo bileşenleri üzerinde denediğimde doğru olarak kullanıcı adı ile birlikte şifreyi de yazıyor ama web için bu yöntemi kullanamıyorum.. acaba asp sitelerinde bununla ilgili bir koruma mı var yoksa web formları için kullanılacak ayrı key kodları mı var? var ise şifre yazdırabilmek için bu kodlar neler? yok ise delphi ile amacıma nasıl ulaşabilirim?
Kainattaki en yüksek hakikat Allah'a imandır..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Sana alternatif bir uygulama örneği vermek isterim...

- Boş bir proje aç ve forma bir adet TWebBrowser nesnesi, bir adet TButton ve iki adet TEdit nesnesi koy... Bunlar varsayılan olarak WebBrowser1, Edit1 ve Edit2 olacaktır...

- Edit1'e hesapta kullandığın oyuncu adını gir.
- Edit2'ye bu oyuncu adına ait password gir.
- Button'a bastığında ise açılan procedure ise aşağıdakini aynen yaz...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  EncodedDataString: string;
  PostData         : OleVariant;
  Headers          : OleVariant;
  I                : Integer;
begin
  WebBrowser1.Navigate('', EmptyParam, EmptyParam, EmptyParam, EmptyParam );
  Application.ProcessMessages;

  EncodedDataString := Format('timestamp=1123435508&v=2&Uni=ogame219.de&login=%s&pass=%s&x=0&y=0', [Edit1.Text, Edit2.Text]);
  PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte);
  for I := 1 to Length(EncodedDataString) do
  PostData[I-1] := Ord(EncodedDataString[I]);
  Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
  WebBrowser1.Navigate('http://ogame219.de/game/reg/login2.php',
                        EmptyParam,
                        EmptyParam,
                        PostData,
                        Headers);
end;
- WebBrowser içerisinde login olduğunu göreceksin...

- Sadece fikir vermesi açısından yazdım. Gizli parametreleri aşağıdakiler olduğunu bildirmek amaçlıydı.
- URL : http://ogame219.de/game/reg/login2.php
- PARAMETRE : timestamp=1123435508&v=2&Uni=ogame219.de&login=isim&pass=sifre&x=0&y=0
Eğer bağımsız bir Internet Explorer kullanmak istersen başlangıç noktan şudur...

Kod: Tümünü seç

  IE := CreateOleObject( 'InternetExplorer.Application');
- Balık tutma zamanıdır... Başarılar.. :lol:
Resim
Resim ....Resim
ElectroNick
Üye
Mesajlar: 119
Kayıt: 05 Oca 2005 04:39

Mesaj gönderen ElectroNick »

teşekkürler... yukarıya yazdığım yöntem ile sorunu çözmeyi başardım ama önerdiğiniz yöntemi de deneyeceğim..
şifrenin yanlış olmasının nedeni o game in şifre kutusunda 6. karakteri yazmıyor olması imiş.. 6. karakter için ayrı mouse koordinatları yazarak ve o kısma şifremin 6. karakterini yazdırıp login i tıklatarak sorunu çözdüm.. :) güzelde oldu.. el ile tıklıyor gibi mouse ekranda bir sn de kullanıcı adımı şifremi yazıp login e basıyor..
hayırlı çalışmalarınızda muvaffakiyetler diliyorum..
Kainattaki en yüksek hakikat Allah'a imandır..
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Kod: Tümünü seç

IE := CreateOleObject( 'InternetExplorer.Application');
ile açmış olduğumuz pencere kapanmışsa bunu nasıl algılayabiliriz? assigned gibi birşey olması lazım. Ama nedir?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

OleVariant değişken olduğunda göre if VarIsEmpty( IE ) şeklinde kullanabilirsin...

Kod: Tümünü seç

Uses ComObj;

Var
 IE: OleVariant;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if VarIsEmpty(IE) then begin
   IE := CreateOLEObject('InternetExplorer.Application');
   IE.Navigate('http://www.google.com.br');
 end;
 Try    IE.Visible := True;
 Except ShowMessage('IExplorer Erişilemedi... Kapatılmış...');
 end;
end;
Resim
Resim ....Resim
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

mrmarman hocam sağol varol.

- Şimdi de başka bir konu ortaya çıktı. kendi uygulamam herzaman üstte olacak şekilde . bunu kulalnıcı yanlışlıkla ekranın ortasına aldı diyelim. O sırada az önce aöçmış olduğumuz IE bir popup çıkardı ve tıklanmasını istiyor.

- Bu popup bizimkinin altında kaldığı için onu tıklayamıyoruz. bizim uygulama da bu esnada donmuş oluyor yerinden kımıldatamıyoruz. mutlak alttaki onay kutusu tıklanması lazım.

- IE nin bu durumu nu hangi olayı ile yakalayabilirim? o olay oluşunca bari penceremiz yana kaysın.

Formun hareket ettirildiğin anlayabilecek birolay da bilmiyorum :oops: ordan algılayıp ortaya geldiyse kenara çekebilirim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Hocam daha önce sormalıydım ancak sorun basit ve açık olduğundan sadece istediğin cevabı vermek durumundaydım.

- Neden TInternetExplorer kullanmıyorsun ? Bir Internet Explorer'i bu kadar dizginlemek istiyorsan TWebBrowser şeklinde tüm Event'lara erişmen gerekir. Dolayısı ile kullandığın tekniği de aşağıda senin için hazırladığım metoda göre değiştirmelisin.

Kod: Tümünü seç

Uses SHDocVw;

Var
  IE: TInternetExplorer;

procedure TForm1.Button1Click(Sender: TObject);
begin
  If NOT Assigned(IE) then
  begin // İlk defa çalışıyor demektir.
    IE := TInternetExplorer.Create(Application);
    // Event bağlantılarını yapıyoruz...
    IE.OnBeforeNavigate2 := BeforeNavigate2;
    IE.OnNewWindow2      := NewWindow2;
  end;
  Try
    IE.Visible := True;
    IE.Navigate( 'http://www.google.com.tr' );
  Except
    ShowMessage('IExplorer Erişilemedi... Kapatılmış...'
                 + #13#13
                 + 'Bir sonraki denemenizde yeniden açılacak...');
    IE := Nil;
  end;
end;

procedure TForm1.BeforeNavigate2(ASender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  Application.BringToFront;
  ShowMessage('Yeni Adres Gidiliyor');
  // Tekrar Internet Explorer Penceresini öne alıyoruz...
  SetForegroundWindow( IE.HWnd );
end;

procedure TForm1.NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
begin
  Application.BringToFront;
  ShowMessage('Yeni Pencere Açılmak istendi, İptal Ediyoruz...');
  Cancel := True;
  // Tekrar Internet Explorer Penceresini öne alıyoruz...
  SetForegroundWindow( IE.HWnd );
end;
Resim
Resim ....Resim
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Kod: Tümünü seç

    IE.OnBeforeNavigate2 := BeforeNavigate2;
    IE.OnNewWindow2      := NewWindow2;
kısmında hata çıkıyor. Parametre yazmak lazım sanırım. Ne yazsam ? ppDisp vs ?
deneme proje> http://www.sistemler.com/IEdeneme50001.zip

TInternetExplorer nesnesi nerededir? component barda yok. Internet tabında Twebbrowser var bu olabilir mi? INdy içnde de yok. Delphi = 7
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kodun başında

Kod: Tümünü seç

Uses SHDocVw;
demişim değil mi :?: yani TInternetExplorer burada tanımlı...

- Ayrıca verdiğim kodları uyguladığın projen çalışıyor. Verilen hata nedir ? onu yazsaydın daha kolay olurdu...
Resim
Resim ....Resim
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Uses SHDocVw; yazmıştım. DErleme hatası: parametreler farklı şeklinde
En son cozturk tarafından 11 Eyl 2007 04:43 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Parametre listen farklılık arz ediyor. Sen şimdi formuna daha sonra silmek üzere bir tane TWebBrowser koy ve bu bahsi geçen aynı eventlara kod yaz. Otomatik üretilen procedure'lerin parametrelerini kopyala ve bu mevcut olanlar yapıştır...
Resim
Resim ....Resim
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Nesnenin adı TInternetExplorer olmadığı için bulup ekleyememişim.

Sonradan TWebBrowser olan nesneyi kendi formumun içinde kullanmaya karar verdim.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Şu an Turbo kullanıyorum, TInternetExplorer tipi Delphi7'deki SHDocVw.pas'da yok mu çok şaşırdım :?:

- Neyse kendince çözüm ürettiğine göre sorun yok anca bu verdiğim kod çalışıyor...
Resim
Resim ....Resim
Cevapla