Winform下利用WebBrowser执行Javascript脚本
2011-11-27 16:59
411 查看
目前很多网站为了防止恶意提交表单信息,大多都采用了加密的方式对提交信息进行处理,加密处理后通过POST提交给服务器验证,这种操作一般都是用Javascipt进行加密,若是我们想要正确提交表单到网站,就需要对javascipt的加密操作进行模拟。那么我们同样可以利用WebBrowser来执行JS脚本,达到加密的目的。
就以移动MM的登录获取验证码为例子,简单描述一下WebBrowser执行JS的过程。
以上代码即为移动MM获取验证码所用的JS代码,我们可以在代码中看到在过程中LoginName被strEnc加密后在提交到网站的。而strEnc是http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js提供的,那么我们只需要执行这个strEnc便能够得到加密后的密文。
首先,我们先写一个执行strEnc的html方便我们调用。
先将窗口类设置为COM可访问
然后将之前我们写好的js代码放到WebBrowser里。
到这里,准备工作就已经做完了,接下来就是调用这个js函数的问题了。
在WebBrowser中,我们可以这样调用JS
会返回一个object的值,函数中返回的一定是一个加密后的字符串,将它转换为string就可以了。
注意一下,不要将调用代码写在Form_Load事件里面。
Demo Download
就以移动MM的登录获取验证码为例子,简单描述一下WebBrowser执行JS的过程。
jQuery.ajax({ url: "/portal/web/SmsRandomSendAction.do", dataType: "json", type: "POST", data: { "loginName": strEnc(loginName,"1234567","",""), "type": type }, success: function(json){ if (json.ret == 1) { ranpastor.showMessage("两次发送下载短信间隙不能小于1分钟"); ranpastor.disabled(); //超出限制次数不能再次发送,不能发送 return; } if (json.ret == 0) {//确认发送短信秘密成功,可以短输入信秘吗,60秒后可再次发送 ranpastor.disabled();//失效 ranpastor.startAutomaticavAilable();//启动自动恢复有效状态 var message = "验证码已发出,如您" message += '<span id="resend_time_count">'+ranpastor.disabledTime+'</span>'; message +="秒还没有收到,请点击按钮重新获取"; ranpastor.showMessage(message); } else {//发送失败,可重新发送 var message = json.message || "发送失败!" if (json.ret == 5) { message = '您今天下发短信密码的次数超过最大短信密码下发次数,请使用最近一次您收到的短信密码,或者使用固定密码方式登录, 如果不记得固定密码, 请使用您的手机发送短信"CZMM"到"10658800",系统会自动为您下发新的固定密码到您手机上,谢谢您的支持!' } ranpastor.available(); ranpastor.showMessage(message); } return false; }
以上代码即为移动MM获取验证码所用的JS代码,我们可以在代码中看到在过程中LoginName被strEnc加密后在提交到网站的。而strEnc是http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js提供的,那么我们只需要执行这个strEnc便能够得到加密后的密文。
首先,我们先写一个执行strEnc的html方便我们调用。
<html> <head> <script type='text/javascript' src='http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js'></script> <script type='text/javascript'> function getPwd(phoneNum) { var result=strEnc(phoneNum,'1234567','',''); return result; } </script> </head> <body></body> </html>
先将窗口类设置为COM可访问
[System.Runtime.InteropServices.ComVisibleAttribute(true)] public partial class FrmDemo : Form
然后将之前我们写好的js代码放到WebBrowser里。
webBrowser1.DocumentText="<html> <head> <script type='text/javascript' src='http://mm.10086.cn/moneditor/cs/include/js/common/core/core.js'></script> <script type='text/javascript'> function getPwd(phoneNum) { var result=strEnc(phoneNum,'1234567','',''); return result; } </script> </head> <body> </body> </html>";
到这里,准备工作就已经做完了,接下来就是调用这个js函数的问题了。
在WebBrowser中,我们可以这样调用JS
webBrowser1.Document.InvokeScript("getPwd", new object[] { "18780110000" })
会返回一个object的值,函数中返回的一定是一个加密后的字符串,将它转换为string就可以了。
注意一下,不要将调用代码写在Form_Load事件里面。
Demo Download
相关文章推荐
- c# winform程序在WebBrowser控件中执行javascript脚本
- winform下利用webBrowser执行javascript
- 利用noesis.Javascript开源组件.Net中执行javascript脚本
- 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码
- c# 执行javascript 脚本 并获得变量值 (winform与javascript交互 )
- winform中WebBrowser控件执行脚本
- 利用noesis.Javascript开源组件.Net中执行javascript脚本
- Winform下动态执行JavaScript脚本获取运行结果,谈谈网站的自动登录及资料获取操作
- Winform下动态执行JavaScript脚本获取运行结果,谈谈网站的自动登录及资料获取操作
- 如何使用WebBrowser控件执行页面的JavaScript脚本,WebBrowser执行JavaScript脚本
- 利用JavaScript脚本改变访问过链接的颜色
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- 网页开发写好的javascript脚本在chrome执行不了但是360可以
- 脚本引擎Rhino执行javascript代码
- 利用JavaScript脚本实现滚屏效果的方法
- php利用root权限执行shell脚本(二)
- 用MSScriptControl 在 C# winform中执行 javascript js代码并实现传递参数
- 利用IronJs在.NET程序里面跑javascript脚本
- 利用win7计划任务本地执行php脚本
- 在WebBrowser里执行JS脚本操作CSS