园子中有很多关于模拟登陆的博客,但没有解除心中的困惑。
采用post方式,将数据发送到指定页面,同时带有相关的数据。
如登陆页面,通常是用户名与密码。
而在实际网站(c#)登陆页面,通常是点击登陆按钮触发登陆事件,在事件中进行登陆处理。
页面控件的值是不存在的,也不会触发事件。
对于C#网站,如果模拟登陆,如何处理这种情况?
--------------------------------------------
通常的c#开发出来的网站,只有在点击登陆按钮时,才会进行身份验证。而数据是取自TextBox文本框,并不是Request等。处理页面就是登陆页面。
通过HttpWebRequest、HttpWebResponse怎样去实现呢?
模拟登录本身,不是模拟你访问的登录页面,而是后台模拟登录的动作。登录验证是表单的话,我们要模拟的是点击“登录”的动作。.
说法非常准确。怎么模拟"登录"这个动作呢?
@lucika.zh:
httpRequest,用来使用代码拼凑一个表单,post回去
或者是一个服务端的一个服务,代码访问。
用chrome或者firefox看看每次按钮提交的数据和地址,然后用来模拟这个~
一个页面,登陆页面。用户名和密码,两个文本框,登陆验证是在点击按钮事件中触发的。怎么才能触发这个事件?
@lucika.zh: 怎样才能触发事件?不知道你要表达什么,微软的控件有事件驱动的么~~
@lucika.zh: 楼主你可能想多了,你说的大概是将登录页中webbrowser控件中打开,程序控制输入用户名和密码然后模拟点击登录按钮吧?这种方式可以获取文档元素调用invoke方法触发点击事件(也可以是其他事件),然而实际应用中这种方式却有着很多不足,它并不能快速操作,他需要一个gui或者需要一个可以承载浏览器的容器。实际上,无论界面上如何操作,最终都是要把数据提交到服务器的,因此,我们只需要知道提交的数据和提交的服务器地址,就可以模拟浏览器操作。
既然是post,我就不关注事件什么的,我只需要提交正确的数据即可~
@芬达:
使用HttpWebRequest与HttpWebResponse,通过CS程序模拟登陆等操作。比如,农场辅助软件。
可以用抓包工具抓到post或get的具体方法,直接向后台验证的动作提交数据
抓取你post的地址,直接跟上参数名称,然后看返回结果
这样post数据是没有任何问题的。但是验证函数不会触发,是由于没有触发点击事件。
而且验证函数取的值是TextBox,直接用参数的方式里面是没有数据的,而不是Request。
LF 你完全可以直接向Form 的action (post)提交数据
注意:post数据时,这样写就可以了,首先抓到登录页面的:用户名与密码文本框的名子。
如:userText, userPassword后写成
userText=登录用户名&userPassword=登录名对应的密码
提交(post)数据,应该可以登录了。