C#执行javascript代码

最近在做网站自动登陆小工具,遇到技术屏障。密码在submit时会使用js进行加密。这时我需要模拟这个加密过程,想到使用C#执行javascript代码。

对于执行javascript代码,纯代码方式使用如下两种方式。

1、Google Chrome V8引擎

Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高。地址: http://javascriptdotnet.codeplex.com/


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)
{
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) {
return document.getElementById(a);
}
window.onload = function () {
$(‘form1‘).onsubmit = function () {
var pwd = $(‘hfdPwd‘);
pwd.value = jingoalSHA1.hex_sha1(jingoalSHA1.hex_sha1($(‘txtPwd‘).value) + $(‘hfdToken‘).value)
}
}

比较复杂逻辑,如提交数据到后台,处理后返回前端执行脚本再次提交到后台。

C/S架构的Winform

使用webbrowser在页面执行脚本,利用api获得值。虽没有上面两种干净和谐,但不失为一种解决方案。

C#执行javascript代码,布布扣,bubuko.com

时间: 2025-01-20 05:43:51

C#执行javascript代码的相关文章

在delphi中执行javascript代码

http://lhdeyx.blog.163.com/blog/static/318196972011101132922916/ 在delphi中执行javascript代码 2011-11-11 15:32:54|  分类: delphi|举报|字号 订阅 下载LOFTER我的照片书  | 有时做项目难免用到代码交叉调用,delphi中执行js就是一种,两种方法可用:一.使用webbrower,比较麻烦二.使用ScriptControl,简单方便:1.首先uses ComObj;2.通用函数:

转:selenium webdriver 执行javascript代码

在用selenium webdriver 编写web页面的自动化测试代码时,可能需要执行一些javascript代码,selenium本身就支持执行js,我们在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了,其中executeScript是同步方法,用它执行js代码会阻塞主线程执行,直到js代码执行完毕:executeAsyncScript方法是异步方法,它不

WebDriver提供了executeScript()方法来执行JavaScript代码

WebDriver提供了executeScript()方法来执行JavaScript代码 业务场景: 打开百度网页,隐藏百度一下按钮,因为里面涉及到按钮的属性,所以要用js. 方法: (JavascriptExecutor)driver.executesScript();

UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv

原文:UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) - walterlv UWP 在 WebView 中执行 JavaScript 代码(用于模拟用户输入等) 2018-12-30 14:08 UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript 代码 模拟用户输入 JavaScript eval(string

Webdriver执行JavaScript代码的方式

WebDriver driver = new ChromeDriver(); JavascriptExecutor jse = (JavascriptExecutor)driver; 1.直接传入JavaScript代码 jse.executeScript("window.open('" + String.format(detailsUrl,urlParam[0],urlParam[1],urlParam[2],urlParam[4],urlParam[3] ) + "')&

MVC POST请求后执行javascript代码

[HttpPost] public ActionResult PostTest() { //你的业务代码 //...... //要执行的js string js = "window.location.href='/Home/index2';"; return JavaScript(js); }

Java执行JavaScript代码

我们要在Java中执行JavaScriptMethods.js中的execute(s1,s2)方法,JavaScriptMethods.js文件内容如下: function execute(s1, s2){ return s1 + s2; } 首先需要定义一个接口,这个接口中给出与要执行的JavaScript方法一样的方法签名,我们定义接口Methods,它的内容如下: /** * 接口中的方法签名必须与要执行的JavaScript方法一致 * @author yuncong * */ publ

动态执行javascript代码的几种方法介绍

在nodejs里面我们要用js来执行js,大概有这几个方式: 1.runInThisContext 我们先看代码和输出: var vm = require('vm'); var localVar=1; globalVar = 0; var script = vm.createScript('globalVar += 1;localVar=3', 'this.vm'); for (var i = 0; i < 1000 ; i += 1) {     script.runInThisContext

java util - 在java代码中执行javascript代码工具 rhino-1.7.7.jar

需要 rhino-1.7.7.jar 包 代码示例: package cn.java.mozilla.javascript; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; public class Test { public static void main(String[] args) { test4JsNormalCode(); test4JsObj(); test4JsFun