怎么用c#编写浏览器或者执行javascript代码?

由于项目需要,需要在c#程序中执行HTML5代码和javascript代码。我一想总不能为了这个写个解释程序吧?得写到猴年马月啊?再说当初编译原理这门课刚及格,基本功也不好。所以上网查了查,javascript解释程序有好多,不过大致都可以分为IE内核,chrome内核和FireFox内核,这里推荐一个工具供大家研究。OWASP-Xenotix-XSS-Exploit-Framework-master,这是一个web安全检测工具,项目地址:https://www.owasp.org/index.php/OWASP_Xenotix_XSS_Exploit_Framework。它可以模拟三种内核的浏览器执行网页上的代码,并且是github上开源的,开源地址:https://github.com/ajinabraham/OWASP-Xenotix-XSS-Exploit-Framework

好了,现在来谈一谈这几天的收获。执行javascript的引擎大致有v8和SpiderMonkey,v8就是谷歌所用的引擎,据说是现在最快的引擎。网上有对v8和SpiderMonkey的测评,结果是v8略胜一筹,有兴趣的可以搜搜。但是这个v8和SpiderMonkey虽然很强大,但是网上的资料也仅限于输出hello world这样的程度,所以放弃这两个强大的引擎。后来又找了找其他c#执行javascript的方法,听说有个javascript.NET的项目,封装了v8引擎,但是这个资料少的可怜,这个笔者成功编译了一个函数调用的例子,但是笔者能力有限没编译出来含有ajax的javascript脚本,有兴趣的可以继续深入研究。项目地址http://javascriptdotnet.codeplex.com/

类似的还有一个叫做V8.NET的项目,项目地址:http://v8dotnet.codeplex.com/

还有一个Selenium,可以对web应用做各种功能测试,有点类似于鼠标精灵的样子。

后来通过研究Xenotix源码发现,发现这个工具使用了一个叫做cefsharp的库。先说一下cef,cef是嵌入式Chromium框架(简称CEF) ,支持多种语言多种平台上编译,对其进行了一层Java封装的是一个叫做JCEF的项目,如果用Java开发浏览器或者执行js可以考虑使用这个。笔者使用c#,而cefsharp就是对CEF进行的一层c#封装,开发起来十分方便。项目地址:https://github.com/cefsharp/CefSharp

其中cefsharp又分为CefSharp.WinForms,CefSharp.Wpf,CefSharp.OffScreen这三种,前两者分别适用于窗口程序和控制台程序,最后一个貌似是用来生成网页快照的(不确定啊)。

现在开始搭建编译环境:

0X00这里使用的是vs2012,以最简单的CefSharp.WinForms为例,首先下载库文件:(官方的网址总是被墙,所以笔者在csdn上传了一个)http://download.csdn.net/detail/u011412226/9428542

有人下下来一看,不就是个库嘛,谁不会用啊。笔者在这里说一下这个重中之重,那就是官网下下来的X64库不能用!!!代码执行后无故退出,还不报错!!!所以建议大家都用x86的就好了。

0X01新建一个窗口程序,右键引用,添加引用

怎么用c#编写浏览器或者执行javascript代码?_第1张图片

引入以下三个dll文件

怎么用c#编写浏览器或者执行javascript代码?_第2张图片

之后将这个文件夹的所有文件,复制到项目文件夹下的/bin/Debug目录下。

0X03注意,如果出现了类似错误:

怎么用c#编写浏览器或者执行javascript代码?_第3张图片

说明你需要修改活动解决平台,右键你的项目打开配置管理器

怎么用c#编写浏览器或者执行javascript代码?_第4张图片

点击新建

怎么用c#编写浏览器或者执行javascript代码?_第5张图片

改成x86

怎么用c#编写浏览器或者执行javascript代码?_第6张图片

之后你的项目bin文件夹下会出现X86和Debug文件夹,要重复第二步,把所有文件再复制给X86下的Debug文件夹一份。

0X04码代码,引用命名空间:

using CefSharp;
using CefSharp.WinForms;

然后码代码就行了

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Cef.Initialize(new CefSettings());
            ChromiumWebBrowser browser = new ChromiumWebBrowser("https://www.baidu.com") { Dock = DockStyle.Fill };
            this.Controls.Add(browser);
            browser.Dock = DockStyle.Fill;
        }
    }

0X05F5,大功告成

怎么用c#编写浏览器或者执行javascript代码?_第7张图片

这里有打包好的程序:http://download.csdn.net/detail/u011412226/9428552

程序里和上面的代码是一样的,想看的多少给一分,好歹也是笔者忙了一个礼拜的成果啊。新年了,也祝大家新年快乐,合家欢乐

你可能感兴趣的:(浏览器,javascript,c#,编译,解释,执行)