1. 程式人生 > >怎麼用c#編寫瀏覽器或者執行javascript程式碼?

怎麼用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

現在開始搭建編譯環境:

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

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