一种获取以chromium为内核的浏览器的URL的方法与流程

文档序号:20946039发布日期:2020-06-02 19:52阅读:1330来源:国知局

本发明涉及一种获取以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完成后,将当前的窗口hwnd值,通过postmessage发送给exe程序;

步骤4,exe程序收到消息后,使用cocreateinstance,初始化iuiautomation接口,然后再使用iuiautomation接口提供的的elementfromhandle,根据当前的窗口hwnd值,获取chrome浏览器根元素接口iuiautomationelement;

步骤5,使用iuiautomation接口提供的createpropertycondition,使用uia_controltypepropertyid和0xc354,获取到一个iuiautomationcodition接口;

步骤6,使用步骤4中获取的chrome浏览器根元素接口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中获取的chrome浏览器根元素接口iuiautomationelement提供的findfirst接口,使用treescope_descendants,及步骤8中获取的iuiautomationcondition接口,获取到url地址输入框的iuiautomationelement接口;

步骤10,使用url地址输入框接口iuiautomationelement提供的getcurrentpropertyvalue,使用uia_valuevaluepropertyid,即可得到url输入框的内容,即当前的url地址;

步骤11,若依旧无法获取到当前chrome浏览器的url地址,则将接收到的窗口设为前景焦点状态,然后使用sendinput模拟键盘向其发送ctrl+l,将窗口的焦点放至于地址栏;

步骤12,exe程序中使用createfilemapping创建一个内存映射文件,文件中有三个字段,分别为ongettingurl、urlstatus和url;其中ongettingurl表示当前是否正处于获取url的期间,urlstatus表示是否正确的获取到了url、url表示获取到的url地址;

步骤13,exe程序将ongettingurl设为t,将urlstatus设为f,然后使用sendinput模拟键盘向chrome浏览器发送ctrl+c来实现向其发送复制命令。;

步骤14,在注入chrome浏览器的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,使用sendinput模拟键盘向chrome浏览器发送shift+tab,使exe程序使焦点离开地址栏;

步骤16,exe程序中检测内存映射文件中urlstatus的值,如果为t,则url字段中的值即为当前的url地址。

当用户在使用以chrome浏览器时,本实施例的方法能够获取到该浏览器浏览的网页的url地址,从而为需要获取以chromium为内核的浏览器的url的工作(如上网审计)提供便利。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1