最近在做网站自动登陆小工具,遇到技术屏障。密码在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);//
}
}
}
}

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);//
} 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代码的更多相关文章

  1. python中执行javascript代码

    python中执行javascript代码: 1.安装相应的库,我使用的是PyV8 2.import PyV8 ctxt = PyV8.JSContext()     ctxt.enter()     ...

  2. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  3. Java执行JavaScript代码

    Java执行JavaScript代码 这篇文章主要为大家详细介绍了Java执行JavaScript代码的具体操作方法,感兴趣的小伙伴们可以参考一下 我们要在Java中执行JavaScriptMetho ...

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

    UWP 中使用 WebView 时可以在网页中额外执行一些代码.于是你几乎可以在网页上做任何事情,那些你可以在浏览器控制台中做的事情. 本文将介绍做法. 本文内容 准备环境 执行 JavaScript ...

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

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

  6. 尚学堂 215 在java中执行JavaScript代码

    package com.bjsxt.test; import java.io.FileReader; import java.net.URL; import java.util.List; impor ...

  7. 转:selenium webdriver 执行javascript代码

    在用selenium webdriver 编写web页面的自动化测试代码时,可能需要执行一些javascript代码,selenium本身就支持执行js,我们在代码中import org.openqa ...

  8. 如何正确的加载和执行 JavaScript 代码

    无论当前 JavaScript 代码是内嵌还是在外链文件中,页面的下载和渲染都必须停下来等待脚本执行完成.JavaScript 执行过程耗时越久,浏览器等待响应用户输入的时间就越长.浏览器在下载和执行 ...

  9. selenium webdriver ——执行javascript代码

    在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了 execut ...

随机推荐

  1. Walls POJ 1161

    参考了大牛的博客 http://blog.csdn.net/wangjian8006/article/details/7958838 题目大意: 给出n个点,在这些点中有些点是俱乐部点,并且有m个区域 ...

  2. Nodejs in Visual Studio Code 04.Swig模版

    1.开始 设置Node_Global:npm config set prefix "C:\Program Files\nodejs" Express组件:npm install e ...

  3. @Resource 和 @Autowired注解的异同

    @Resource 和 @Autowired注解的异同 @Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false 例 ...

  4. 【转】使用 NuGet 管理项目库-Phil Haack

    原文地址:https://msdn.microsoft.com/zh-cn/magazine/hh547106.aspx 无论多么努力,Microsoft 也没办法提供开发人员所需要的每一个库. 虽然 ...

  5. Jquery的hover方法让鼠标经过li时背景变色

    来源地址:http://itfish.net/article/29790.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  6. TortoiseGit上传代码到GitHub

    Github是管理软件开发的首选托管网站,12306的火车票插件一时让国内当时很多小白开发者(当然也包括我)认识到了这个网站.GitHub可以托管各种git库,并提供一个web界面,与 SourceF ...

  7. vs2008打包公布程序

    vs2008打包公布程序 一vs2008中新建 安装项目,确定(新建 安装向导 也能够) 二.加入内容 1.加入主要内容: 应用程序目录=>右键=>加入=>文件,找到须要的文件,包含 ...

  8. java web mvc思想介绍

    1.首先简介一下什么是MVC思想. 在百度百科里面对MVC的说明,MVC全名是Model View Controller.是模型(model)-视图(view)-控制器(controller)的缩写. ...

  9. hdu 1685 Booksort (IDA*)

    Booksort Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Tot ...

  10. [Javascript] Array methods in depth - slice

    Array slice creates a shallow copy of an array. In this lesson we cover, in detail, exactly what a ' ...