分享

模仿用户在浏览器里(ChtmlView做的浏览器)的操作行为

 quasiceo 2014-07-13

模仿用户在浏览器里(ChtmlView做的浏览器)的操作行为 [问题点数:100分,结帖人bairen2010]

bairen2010
关注
bairen2010
bairen2010
等级:Blank
结帖率:100%
楼主 发表于: 2007-12-11 13:41:13
模仿用户在浏览器里(ChtmlView做的浏览器)的操作行为
之前是获取IHTMLDocument,然后模拟IHTMLElement的填写或点击,但多框架网页(Frame,IFrame)的情况很难处理。

现在打算从对协议的研究,来模拟。
用户点击超级链接和提交按钮时,会向服务器发送request信息,然后服务器返回respose信息给浏览器。
请问可以获取request信息保存下来,以后再让浏览器发送这些信息给服务器吗?

暂时看的Winsock和WinInet方面的模拟方面的东西都是自己从零开始写个程序来实现的。

而我是想获取Chtmlview里发送的request信息

大家有什么思路,分享下  ^_^
回复次数:5
jameshooo
关注
jameshooo
jameshooo
等级:Blank
2
更多勋章
#1 得分:100 回复于: 2007-12-11 14:21:35
模拟点击就是调用IHTMLElement::click()方法。
多框架网页也一样可以做到啊,从根文档开始:

IHTMLDocument2::frames属性得到IFrame或Frame的集合IHTMLFramesCollection2;
遍历这个集合,针对每个集合的节点(IHTMLFrameElement或IHTMLIFrameElement),查询接口IHTMLFrameBase2;
调用IHTMLFrameBase2::contentWindow属性获得该框架的IHTMLWindow2;
调用IHTMLWindow2::document属性获得框架页面的IHTMLDocument2接口……

又是Document,这下知道后面该如何做了吧
bairen2010
关注
bairen2010
bairen2010
等级:Blank
#2 得分:0 回复于: 2007-12-11 17:48:57
To jameshooo :
模拟点击的确可以很容易实现,
难处是在获取用户的点击时(程序需要用户先执行一次操作流程,然后程序记录并保存下来,以后自动执行),
我要获取用户点击了什么按钮或超级链接,我用了Document的ElementFromPoint的方法,
可在多框架网页里,这是很麻烦的事:
首先你不知道当时鼠标所在的框架,因此不知道调用哪个document来使用ElementFromPoint,
循环遍历可能会返回多个元素.
而且ElementFromPoint需要提供的坐标参数还要是相对该框架的坐标才行.

jameshooo
关注
jameshooo
jameshooo
等级:Blank
2
更多勋章
#3 得分:0 回复于: 2007-12-11 21:29:13
应该做些假设:你要获取的是用户点击后URL的?后面的参数,比如 http://www./login.asp?username=me&password=123,你想保存这样的信息是吧,你的思路也可以,但是有点杀鸡用牛刀,还有另外两种方案:

1、这种情形通常出现在FORM中,你只需要遍历FORM中的元素,寻找所有可能的input和submit元素,对submit元素捕获onclick事件,在事件中获得所有FORM中input(包括hidden)元素的name和value,自己可以构造这个URL语句保存起来。

2、通用一点的做法是做一个名字空间过滤器,所有URL请求都会经过你的过滤器过滤,只要你发现有?存在,你就保存这个URL
bairen2010
关注
bairen2010
bairen2010
等级:Blank
#4 得分:0 回复于: 2007-12-13 13:25:50
To jameshooo:
请问你的"对submit元素捕获onclick事件"的思路是怎么样的?
怎么捕获?

jameshooo
关注
jameshooo
jameshooo
等级:Blank
2
更多勋章
#5 得分:0 回复于: 2007-12-14 12:25:55
自己实现一个IDispatch接口,把这个接口指针直接赋值给 IHTMLElement->onclick,你在Invoke方法里面处理

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多