怎麼用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.WinFormsCefSharp.WpfCefSharp.OffScreen這三種,前兩者分別適用於窗口程序和控制檯程序,最後一個貌似是用來生成網頁快照的(不確定啊)。

現在開始搭建編譯環境:

0X00這裏使用的是vs2012,以最簡單的CefSharp.WinForms爲例,首先下載庫文件:(官方的網址總是被牆,所以筆者在csdn上傳了一個)http://download.csdn.net/detail/u011412226/9428542

有人下下來一看,不就是個庫嘛,誰不會用啊。筆者在這裏說一下這個重中之重,那就是官網下下來的X64庫不能用!!!代碼執行後無故退出,還不報錯!!!所以建議大家都用x86的就好了。

0X01新建一個窗口程序,右鍵引用,添加引用


引入以下三個dll文件


之後將這個文件夾的所有文件,複製到項目文件夾下的/bin/Debug目錄下。

0X03注意,如果出現了類似錯誤:


說明你需要修改活動解決平臺,右鍵你的項目打開配置管理器


點擊新建


改成x86


之後你的項目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,大功告成


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

程序裏和上面的代碼是一樣的,想看的多少給一分,好歹也是筆者忙了一個禮拜的成果啊。新年了,也祝大家新年快樂,閤家歡樂微笑

發佈了36 篇原創文章 · 獲贊 36 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章