一种获取以chromium为内核的浏览器的URL的方法技术

技术编号:24352516 阅读:43 留言:0更新日期:2020-06-03 01:53
本发明专利技术公开了一种获取以chromium为内核的浏览器的URL的方法,通过编写exe程序中将能够对SetWindowText进行ApiHook的DLL注入到浏览器进程中;当用户输入网址或者通过链接打开网址后,浏览器会通过SetWindowText来修改当前页面的标题;当SetWindowText完成后,将当前的窗口HWND值发送给exe程序;当exe程序收到消息后,exe程序将接收到的窗口设为前景焦点状态,然后将窗口的焦点放至于地址栏;随后exe程序中使用CreateFileMapping创建一个内存映射文件;exe程序中检测内存映射文件中UrlStatus的值,如果为T,则Url字段中的值即为当前的URL地址。本发明专利技术能够获取以chromium为内核的浏览器浏览的网页的URL地址,从而为需要获取以chromium为内核的浏览器的URL的工作提供便利。

A method to get the URL of browser with chrome as its kernel

【技术实现步骤摘要】
一种获取以chromium为内核的浏览器的URL的方法
本专利技术涉及一种获取以chromium为内核的浏览器的URL的方法。
技术介绍
目前,随着互联网技术的不断普及,使用浏览器浏览网页已成为人们获取信息的主要途径。在实际使用环境中,比如上网审计,需要知道在浏览过程中都访问了哪些URL地址。但是以chromium为内核的浏览器(如chrome浏览器),并没有为用户提供外部接口以访问当前页面的URL地址。针对上述的问题,目前尚未存在有效的解决方案。
技术实现思路
本专利技术的目的是提供一种获取以chromium为内核的浏览器的URL的方法,为用户提供外部接口以访问当前页面的URL地址。实现本专利技术目的的技术方案是:一种获取以chromium为内核的浏览器的URL的方法,包括以下步骤:步骤1,编写一个DLL,在DLL中,对SetWindowText进行ApiHook;步骤2,编写一个exe程序,并且在exe程序中将步骤1中编写的DLL注入到浏览器进程中;步骤3,当用户输入网址或者通过链接打开网址后,浏览器会通过SetWindowText来修改当前页面的标题,并且在注入浏览器的DLL中,将通过ApiHook获取到该过程;当SetWindowText完成后,将当前的窗口HWND值发送给exe程序;步骤4,exe程序收到消息后,使用CoCreateInstance,初始化IUIAutomation接口,然后再使用IUIAutomation接口提供的的ElementFromHandle,根据当前的窗口HWND值,获取浏览器根元素接口IUIAutomationElement;步骤5,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_ControlTypePropertyId和0xC354,获取到一个IUIAutomationCodition接口;步骤6,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤5中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口。步骤7,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,得到URL输入框的内容,即当前的URL地址;步骤8,如果无法获取到URL地址,则可能是步骤5中提供的参数2不正确或者其值被其他的窗口元素所引用;此时,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_NamePropertyId、地址和搜索栏,获取到一个IUIAutomationCodition接口;步骤9,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤8中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口;步骤10,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,即可得到URL输入框的内容,即当前的URL地址;步骤11,若依旧无法获取到当前浏览器的URL地址,则将接收到的窗口设为前景焦点状态,然后将窗口的焦点放至于地址栏;步骤12,exe程序中使用CreateFileMapping创建一个内存映射文件,文件中有三个字段,分别为OnGettingUrl、UrlStatus和URL;其中OnGettingUrl表示当前是否正处于获取URL的期间,UrlStatus表示是否正确的获取到了URL、URL表示获取到的URL地址;步骤13,exe程序将OnGettingURL设为T,将UrlStatus设为F,然后向浏览器发送复制命令;步骤14,在注入浏览器的DLL中,对OpenClipboard、EmptyClipboard、SetClipboardData、CloseClipboard进行ApiHook;在OpenClipboard、EmptyClipboard、CloseClipboard过程中,使用OpenFileMapping打开exe创建的内存映射文件,如果发现OnGettingUrl字段是T,则直接返回TRUE,否则调用原始的OpenClipboard、EmptyClipboard、ClsoeClipboard;在SetClipboardData过程中,如果OnGettingUrl为T,则判断uFormat,如果是CF_TEXT/CF_UNICODETEXT,则获取之,然后将内存映射文件的UrlStatus设为T,将获取到的值放置于Url字段;步骤15,exe程序使焦点离开地址栏;步骤16,exe程序中检测内存映射文件中UrlStatus的值,如果为T,则Url字段中的值即为当前的URL地址。进一步地,所述步骤2中,在exe程序中使用SetWindowsHookEx将DLL注入到浏览器进程中。进一步地,所述步骤3中,当SetWindowText完成后,将当前的窗口HWND值通过PostMessage发送给exe程序。进一步地,所述步骤4中exe程序通过使用SendInput模拟键盘向其发送Ctrl+L,来实现将窗口的焦点放至于地址栏。进一步地,所述步骤6中,exe程序通过使用SendInput模拟键盘向浏览器发送Ctrl+C,来实现向浏览器发送复制命令。进一步地,所述步骤8中,exe程序通过使用SendInput模拟键盘向浏览器发送Shift+Tab,使焦点离开地址栏。采用了上述技术方案,本专利技术具有以下的有益效果:本专利技术能够获取以chromium为内核的浏览器浏览的网页的URL地址,从而为需要获取以chromium为内核的浏览器的URL的工作(如上网审计)提供便利。具体实施方式本实施例以Chrome浏览器为例,获取Chrome浏览器的URL的方法,包括以下步骤:步骤1,编写一个DLL,在DLL中,对SetWindowText进行ApiHook;步骤2,编写一个exe程序,在exe中,使用SetWindowsHookEx将上述DLL注入到chrome.exe的进程中。步骤3,当用户输入网址或者通过链接打开网址后,Chrome浏览器会通过SetWindowText来修改当前页面的标题,并且在注入Chrome浏览器的DLL中,可以通过ApiHook获取到该过程;当SetWindowText完成后,将当前的窗本文档来自技高网...

【技术保护点】
1.一种获取以chromium为内核的浏览器的URL的方法,其特征在于:包括以下步骤:/n步骤1,编写一个DLL,在DLL中,对SetWindowText进行ApiHook;/n步骤2,编写一个exe程序,并且在exe程序中将步骤1中编写的DLL注入到浏览器进程中;/n步骤3,当用户输入网址或者通过链接打开网址后,浏览器会通过SetWindowText来修改当前页面的标题,并且在注入浏览器的DLL中,将通过ApiHook获取到该过程;当SetWindowText完成后,将当前的窗口HWND值发送给exe程序;/n步骤4,exe程序收到消息后,使用CoCreateInstance,初始化IUIAutomation接口,然后再使用IUIAutomation接口提供的的ElementFromHandle,根据当前的窗口HWND值,获取浏览器根元素接口IUIAutomationElement;/n步骤5,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_ControlTypePropertyId和0xC354,获取到一个IUIAutomationCodition接口;/n步骤6,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤5中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口。/n步骤7,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,得到URL输入框的内容,即当前的URL地址;/n步骤8,如果无法获取到URL地址,则可能是步骤5中提供的参数2不正确或者其值被其他的窗口元素所引用;此时,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_NamePropertyId、地址和搜索栏,获取到一个IUIAutomationCodition接口;/n步骤9,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤8中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口;/n步骤10,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,即可得到URL输入框的内容,即当前的URL地址;/n步骤11,若依旧无法获取到当前浏览器的URL地址,则将接收到的窗口设为前景焦点状态,然后将窗口的焦点放至于地址栏;/n步骤12,exe程序中使用CreateFileMapping创建一个内存映射文件,文件中有三个字段,分别为OnGettingUrl、UrlStatus和URL;其中OnGettingUrl表示当前是否正处于获取URL的期间,UrlStatus表示是否正确的获取到了URL、URL表示获取到的URL地址;/n步骤13,exe程序将OnGettingURL设为T,将UrlStatus设为F,然后向浏览器发送复制命令;/n步骤14,在注入浏览器的DLL中,对OpenClipboard、EmptyClipboard、SetClipboardData、CloseClipboard进行ApiHook;在OpenClipboard、EmptyClipboard、CloseClipboard过程中,使用OpenFileMapping打开exe创建的内存映射文件,如果发现OnGettingUrl字段是T,则直接返回TRUE,否则调用原始的OpenClipboard、EmptyClipboard、ClsoeClipboard;在SetClipboardData过程中,如果OnGettingUrl为T,则判断uFormat,如果是CF_TEXT/CF_UNICODETEXT,则获取之,然后将内存映射文件的UrlStatus设为T,将获取到的值放置于Url字段;/n步骤15,exe程序使焦点离开地址栏;/n步骤16,exe程序中检测内存映射文件中UrlStatus的值,如果为T,则Url字段中的值即为当前的URL地址。/n...

【技术特征摘要】
1.一种获取以chromium为内核的浏览器的URL的方法,其特征在于:包括以下步骤:
步骤1,编写一个DLL,在DLL中,对SetWindowText进行ApiHook;
步骤2,编写一个exe程序,并且在exe程序中将步骤1中编写的DLL注入到浏览器进程中;
步骤3,当用户输入网址或者通过链接打开网址后,浏览器会通过SetWindowText来修改当前页面的标题,并且在注入浏览器的DLL中,将通过ApiHook获取到该过程;当SetWindowText完成后,将当前的窗口HWND值发送给exe程序;
步骤4,exe程序收到消息后,使用CoCreateInstance,初始化IUIAutomation接口,然后再使用IUIAutomation接口提供的的ElementFromHandle,根据当前的窗口HWND值,获取浏览器根元素接口IUIAutomationElement;
步骤5,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_ControlTypePropertyId和0xC354,获取到一个IUIAutomationCodition接口;
步骤6,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤5中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口。
步骤7,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,得到URL输入框的内容,即当前的URL地址;
步骤8,如果无法获取到URL地址,则可能是步骤5中提供的参数2不正确或者其值被其他的窗口元素所引用;此时,使用IUIAutomation接口提供的CreatePropertyCondition,使用UIA_NamePropertyId、地址和搜索栏,获取到一个IUIAutomationCodition接口;
步骤9,使用步骤4中获取的浏览器根元素接口IUIAutomationElement提供的FindFirst接口,使用TreeScope_Descendants,及步骤8中获取的IUIAutomationCondition接口,获取到URL地址输入框的IUIAutomationElement接口;
步骤10,使用URL地址输入框接口IUIAutomationElement提供的GetCurrentPropertyValue,使用UIA_ValueValuePropertyId,即可得到URL输入框的内容,即当前的URL地址;
步骤11,若依旧无法获取到当前浏览器的URL地址,则将接收到的...

【专利技术属性】
技术研发人员:邱文乔
申请(专利权)人:无锡安腾软件开发有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1