Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Aktif olan tarayıcıdan URL bilgisi almak
#1
Merhaba

Aktif olan tarayıcılardan (chrome,firefox,explorer)  etkin sekmenin URL bilgisi  nasıl alabilirim.(Önceliğimiz tarayıcı  chrome)

GetActiveWindow  ile  başlıklarını alabiliyorum.

Bu konuda yardımcı olabilirmsiniz?
Cevapla
#2
ChatGPT şöyle cevap verdi.

Merhaba!
Delphi ile aktif tarayıcıların etkin sekmesinin URL bilgisini almak için, tarayıcıların API'larını kullanmanız gerekecektir. Chrome için özel olarak örnek vereceğim, çünkü bu örnek diğer tarayıcılar için de genel bir yaklaşım sağlayacaktır. Diğer tarayıcılar için de benzer API'ları kullanarak benzer işlemleri gerçekleştirebilirsiniz.
Google Chrome için URL bilgisini almak için aşağıdaki adımları takip edebilirsiniz:
1.    Chrome'un Developer Tools Protocol (DevTools Protokolü) API'sini kullanarak bu işlemi gerçekleştirebilirsiniz. Bu API, Chrome'un iç işleyişine erişim sağlar.
2.    Bu işlem için bir HTTP isteği yapmanız gerekecektir. Bu isteği Delphi'de gerçekleştirebilmek için TIdHTTP veya TNetHTTPClient gibi bileşenleri kullanabilirsiniz.
3.    Etkin tarayıcı sekmesinin URL'sini almak için Runtime.evaluate komutunu kullanmanız gerekecektir.
İşte temel bir örnek kod:

uses
 IdHTTP, System.JSON;

function GetChromeActiveTabURL: string;
var
 ChromeDebuggerURL: string;
 DebuggerAddress: string;
 HTTPClient: TIdHTTP;
 ResponseContent: string;
 ResultJSON: TJSONObject;
begin
 ChromeDebuggerURL := 'http://localhost:9222/json'; // Chrome Debugging Protocol URL
 HTTPClient := TIdHTTP.Create;
 
 try
   ResponseContent := HTTPClient.Get(ChromeDebuggerURL);
   ResultJSON := TJSONObject.ParseJSONValue(ResponseContent) as TJSONObject;

   if ResultJSON.Count > 0 then
   begin
     DebuggerAddress := ResultJSON.Items[0].GetValue('webSocketDebuggerUrl').Value;

     if DebuggerAddress <> '' then
     begin
       ResponseContent := HTTPClient.Get(DebuggerAddress + '/json');

       ResultJSON.Free;
       ResultJSON := TJSONObject.ParseJSONValue(ResponseContent) as TJSONObject;

       if ResultJSON.Count > 0 then
       begin
         Result := ResultJSON.Items[0].GetValue('url').Value;
       end;
     end;
   end;
 finally
   HTTPClient.Free;
   ResultJSON.Free;
 end;
end;

Bu örnek kod, etkin Chrome sekmesinin URL'sini almanıza yardımcı olacaktır. Benzer bir yaklaşımı diğer tarayıcılar için de kullanarak etkin sekmenin URL bilgisini alabilirsiniz. Unutmayın ki tarayıcıların güncellemeleri veya değişen API'ları nedeniyle kodunuzu güncellemek gerekebilir.
Cevapla
#3
yapay zekanın söylemediği chrome.exe --remote-debugging-port=9222  ile çalıştırmadığınız sürece, erişemezsiniz.
memory den okunabilir, readprocessmemory ile.

gelen veri şu formatta olacakdır.

view-source:http://localhost:9222/json --->

[ {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/B42D934417538EA15518DBB4FF8A0861",
   "faviconUrl": "https://www.delphican.com/images/favicon.png",
   "id": "B42D934417538EA15518DBB4FF8A0861",
   "title": "Delphi Can",
   "type": "page",
   "url": "https://delphican.com/",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/B42D934417538EA15518DBB4FF8A0861"
}, {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/64CF2910663793380B001B2F409A3DD1",
   "faviconUrl": "https://www.delphican.com/images/favicon.png",
   "id": "64CF2910663793380B001B2F409A3DD1",
   "parentId": "B42D934417538EA15518DBB4FF8A0861",
   "title": "https://platform.twitter.com/widgets/widget_iframe.2b2d73daf636805223fb11d48f3e94f7.html?origin=https%3A%2F%2Fdelphican.com",
   "type": "iframe",
   "url": "https://platform.twitter.com/widgets/widget_iframe.2b2d73daf636805223fb11d48f3e94f7.html?origin=https%3A%2F%2Fdelphican.com",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/64CF2910663793380B001B2F409A3DD1"
}, {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/5F61385BB42F617A74D6B473EE051FF8",
   "faviconUrl": "https://www.delphican.com/images/favicon.png",
   "id": "5F61385BB42F617A74D6B473EE051FF8",
   "parentId": "B42D934417538EA15518DBB4FF8A0861",
   "title": "https://www.facebook.com/v5.0/plugins/like.php?action=like&amp;app_id=&amp;channel=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df37ced150f251d8%26domain%3Ddelphican.com%26is_canvas%3Dfalse%26origin%3Dhttps%253A%252F%252Fdelphican.com%252Ff4a07dbca7071c%26relation%3Dparent.parent&amp;color_scheme=light&amp;container_width=1310&amp;href=https%3A%2F%2Fwww.delphican.com%2F&amp;layout=button_count&amp;locale=en_US&amp;sdk=joey&amp;share=true&amp;show_faces=true&amp;size=small",
   "type": "iframe",
   "url": "https://www.facebook.com/v5.0/plugins/like.php?action=like&app_id=&channel=https%3A%2F%2Fstaticxx.facebook.com%2Fx%2Fconnect%2Fxd_arbiter%2F%3Fversion%3D46%23cb%3Df37ced150f251d8%26domain%3Ddelphican.com%26is_canvas%3Dfalse%26origin%3Dhttps%253A%252F%252Fdelphican.com%252Ff4a07dbca7071c%26relation%3Dparent.parent&color_scheme=light&container_width=1310&href=https%3A%2F%2Fwww.delphican.com%2F&layout=button_count&locale=en_US&sdk=joey&share=true&show_faces=true&size=small",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/5F61385BB42F617A74D6B473EE051FF8"
}, {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/28C3FE498D8976317BF455AC3FE921D1",
   "faviconUrl": "https://www.delphican.com/images/favicon.png",
   "id": "28C3FE498D8976317BF455AC3FE921D1",
   "parentId": "B42D934417538EA15518DBB4FF8A0861",
   "title": "https://platform.twitter.com/widgets/tweet_button.2b2d73daf636805223fb11d48f3e94f7.tr.html#dnt=false&amp;id=twitter-widget-0&amp;lang=tr&amp;original_referer=https%3A%2F%2Fdelphican.com%2F&amp;size=l&amp;text=Delphi%20Can&amp;time=1692876307820&amp;type=share&amp;url=https%3A%2F%2Fdelphican.com%2F",
   "type": "iframe",
   "url": "https://platform.twitter.com/widgets/tweet_button.2b2d73daf636805223fb11d48f3e94f7.tr.html#dnt=false&id=twitter-widget-0&lang=tr&original_referer=https%3A%2F%2Fdelphican.com%2F&size=l&text=Delphi%20Can&time=1692876307820&type=share&url=https%3A%2F%2Fdelphican.com%2F",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/28C3FE498D8976317BF455AC3FE921D1"
}, {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/6AA568062FD49578AC87AAC713860E81",
   "id": "6AA568062FD49578AC87AAC713860E81",
   "title": "Yeni Sekme",
   "type": "page",
   "url": "chrome://newtab/",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/6AA568062FD49578AC87AAC713860E81"
}, {
   "description": "",
   "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/F5847DC2F5877F0605D503B75FA5C38F",
   "id": "F5847DC2F5877F0605D503B75FA5C38F",
   "parentId": "6AA568062FD49578AC87AAC713860E81",
   "title": "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=",
   "type": "iframe",
   "url": "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/F5847DC2F5877F0605D503B75FA5C38F"
} ]
Cevapla
#4
Butona basınca okuyacak mı yoksa aktif olarak takip mi edecek? Takip işi çok zorlamıştı ama uzun zaman önce yapmıştım bir tane UpWork veya Freelancer talebi için. Tatildeyim kodlar arşivde ama animasyon resmi şöyle idi.. Sadece mümkün olduğuna işaret etmek istedim. Güncel uygulamalarda denemek lazım. 

beicousaxxazomjgwk3e.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
chrome.exe --remote-debugging-port=9222 bu şekilde çalıştırıyorum

readprocessmemory inceleme rağmen yeterli sonuca ulaşamadım

wHandle := FindWindow(nil,'');
if wHandle <> 0 then
begin
tHandle := GetWindowThreadProcessId(wHandle, @ProcessID);
pHandle := OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);
ReadProcessMemory(pHandle,???,???, NumberofBytes, BytesRead);
end;

ReadProcessMemory bunu ne şekilde kullanmak gerekiyor. Sizin örnekte gösterdiğiniz verilere ulaşamadım. konuyla ilgili biraz daha bilgi verrseniz sevinirim.

{
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/F5847DC2F5877F0605D503B75FA5C38F",
"id": "F5847DC2F5877F0605D503B75FA5C38F",
"parentId": "6AA568062FD49578AC87AAC713860E81",
"title": "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=",
"type": "iframe",
"url": "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/F5847DC2F5877F0605D503B75FA5C38F"
}

(24-08-2023, Saat: 17:32)mrmarman Adlı Kullanıcıdan Alıntı: Butona basınca okuyacak mı yoksa aktif olarak takip mi edecek? Takip işi çok zorlamıştı ama uzun zaman önce yapmıştım bir tane UpWork veya Freelancer talebi için. Tatildeyim kodlar arşivde ama animasyon resmi şöyle idi.. Sadece mümkün olduğuna işaret etmek istedim. Güncel uygulamalarda denemek lazım. 

beicousaxxazomjgwk3e.gif


[url=https://www.delphican.com/member.php?action=profile&uid=12][/url]Muharrem bey yapmış olduğunuz çalışma tam benim istediğim verileri getiriyor.
Cevapla
#6
@mrmarman hocam sizin burada göstermiş olduğunuz örnek animasyon için örnek kod atmanız mümkünmüdür.(choreme eski versiyonlarında url bilgisi alınabiliyormuş ama güncel versiyonlarda webte url bilgisini alabilen çalışan bir örnek uygulama göremedim.)
Cevapla
#7
Bu proje çok derin bir çalışma içeriyor. Basit değil.

Basit bir FindWindow WM_GETTEXT işlemi değil. Bunu belirtmem lazım. 

* Thread kurdum, mesaj takip ettim, mesajları ayıkladım ki takip listesinde olmayan yeni chromium altyapısındaki farklı browserlarda (brave dahil tespit edebiliyor) maksimum sayıda destek vermek amaçlıydı vs. çok aşamalı bir işlem bendeki. 

Diğer yandan size destek için temelde başvurduğum şu stackoverflow linkindeki gibi benzer bir kurgudur ve düzgün çalışıyor.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#8
@mrmarman hocam teşekkürederim.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  video player olan formu kapatma tekrar acma sorunu sadikacar60 3 983 26-11-2024, Saat: 16:39
Son Yorum: esistem
  Listview Aktif Kaydın bilgisi m_ekici 1 636 22-11-2024, Saat: 17:36
Son Yorum: m_ekici
  Bakanlıktan Bitki Koruma Ürünleri Stok Bilgisi Alınması bünyamin68 43 20.392 06-11-2024, Saat: 16:55
Son Yorum: bünyamin68
  bir resimden renk kodunu $00584827 seklinde almak sadikacar60 2 820 01-10-2024, Saat: 13:02
Son Yorum: frmman
  PDF dosyasından veri almak Mikdad 11 2.401 07-09-2024, Saat: 10:51
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi