C#执⾏javascript代码
最近在做⽹站⾃动登陆⼩⼯具,遇到技术屏障。密码在submit时会使⽤js进⾏加密。这时我需要模拟这个加密过程,想到使⽤C#执⾏javascript代码。
对于执⾏javascript代码,纯代码⽅式使⽤如下两种⽅式。
1、Google Chrome V8引擎
Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较⾼。地址:
using Noesis.Javascript;
using System;
using System.Collections.Generic;
namespace JsCSharp
{
class Program
{
static void Main(string[] args)
{
using (JavascriptContext ctx = new JavascriptContext())
{
var j = ctx.Run("function add(x,y){return x+y;};add(5,10);");
Console.WriteLine(j);//15
}
}
}
}
2、使⽤ Microsoft.JScript
Microsoft.JScript是微软提供的程序集,可以在vs中直接添加引⽤。在开发时必须引⼊Microsoft.JScript、Microsoft.Vsa命名空间。
using Microsoft.JScript;
using Microsoft.JScript.Vsa;
using System;
namespace JsCSharp
{
class Program
{
static VsaEngine Engine = VsaEngine.CreateEngine();
static void Main(string[] args)js代码加密软件
{
var j = EvalJScript("function add(x,y){return x+y;};add(5,10);");
Console.WriteLine(j);//15
}
static object EvalJScript(string JScript)
{
object Result = null;
try
{
Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);
}
catch (Exception ex)
{
return ex.Message;
}
return Result;
}
}
}
3、最后我使⽤的⽅法
在开发中,使⽤加密js似乎存在缺陷,应⽤上⾯两种⽅法均返回“参数不匹配”错误,但是在浏览器控制台执⾏加密脚本没有出现任何错误。故使⽤替代⽅法。
B/S架构web应⽤执⾏javascript
页⾯执⾏javascript后,再提交结果到后台。
window.$ = function (a) {
ElementById(a);
}
$('form1').onsubmit = function () {
var pwd = $('hfdPwd');
pwd.value = jingoalSHA1.hex_sha1(jingoalSHA1.hex_sha1($('txtPwd').value) + $('hfdToken').value)
}
}
⽐较复杂逻辑,如提交数据到后台,处理后返回前端执⾏脚本再次提交到后台。
C/S架构的Winform
使⽤webbrowser在页⾯执⾏脚本,利⽤api获得值。虽没有上⾯两种⼲净和谐,但不失为⼀种解决⽅案。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。