写代码自动操作,更给力!
这段时间没有写博客,思考了很多技术之外的东西,感觉有时候停一停思考一下生活还是不错的。
在日常生活中,我们借助计算机系统解决了许多问题,网页提供了这么一个处理界面,而这个界面上的某些操作是可以通过代码来执行的,这样我们就可以将这个过程全部交给计算机来处理了。本篇将会通过一个签到系统来说明。
假如,我们有一个签到系统,每天都需要登录系统,点击“签到”按钮来记录每天的考勤,当然拿这个过程来自动化仅仅只是个例子,现实生活中如果您这样做被领导发现,那就给力了…
系统的界面
登录:
登录后跳转到刷新页面:
点击刷新之后的效果:
这里我们想要利用代码进行刷新操作的话呢,需要经过登录,刷新两个步骤,这里我想到两个方案:
- 分析Login.aspx页面的HTML代码,在原HTML代码中加入JS脚本的方式来填写用户名密码并提交到服务器
- 通过Fiddler分析每次请求的数据内容,使用.Net中的HttpRequest相关类库模拟这个登录请求
第一种方法:我们需要获取要自动操作的页面HTML,然后进行一些改动
在页面HTML的最后我们使用脚本填写了用户名和密码,并点击了登录的按钮,这里有个关键,这个被篡改后的HTML怎么执行呢,我们只需要使用代码将这个HTML文件读取并解析一下即可,然后将获取到的Index.aspx页面HTML代码再以同样的方法解析即可。
第二种方法:在发送登录请求时,我们使用Fiddler截获了通信的数据
这里注意要在地址localhost后面加上一个.才能被Fiddler截获分析。当我们点击Login后
看看传递了什么数据吧
稍加分析便看到,回传的是_VIEWSTATE的字符串,我们知道ASPX的页面改变信息是通过这个隐藏的控件来回传给服务端分析的,好,那么我们只需要用代码来模拟这次请求即可:
这段代码是一个抽出来的方法,可以想指定的URL发送数据请求,我们来试试
经过断点调试我们截获了服务器返回的值
这就说明服务器接收到这个登录请求后,通过了验证,想客户端返回了Index.aspx的HTML代码。
我这里只是抛砖引玉,各位朋友如果有更好的办法,欢迎交流。