2011-11-26 104 views
1

我正在開發一個桌面應用程序,該應用程序必須在用戶打開銀行wabsite後禁用防病毒軟件或其他安全軟件時通知用戶。該銀行網址 以應用程序而聞名。如果要從用戶訪問給定的銀行網站,我的應用程序必須啓動通知窗口。我希望應用程序檢查用戶打開哪個網站(鏈接),並且如果它是預定義的鏈接,則通知表單應顯示。是否可以在不開發瀏覽器插件的情況下做到這一點?桌面應用程序可以獲取網站URL嗎?

+0

+1這可能有助於:http://www.codeproject.com/Messages/2341199/How-to-detect-browser-url-using-vb-net.aspx –

回答

1

簡短的回答是No.

較長的答案是肯定的。但是你必須進入網絡嗅探(不會工作 - 銀行流量通常是加密的)或內存的東西(手動從RAM中讀取字符串等)。在這兩種情況下,製作瀏覽器加載項至少要容易1000倍。

+0

我無法想象這兩個答案可能存在在同一時間,我的意思是是/否。只有一個! – sll

+1

如果你是一個非常好的程序員,是的。否則,不。從他/她不得不問的事實來看, –

+0

這並不意味着如果一個人是一個非常好的程序員應該知道每一件事 – Tady

0

通過開發瀏覽器插件和/或http(s)-proxy和/或沙盒瀏覽器和/或用修改後的版本替換瀏覽器和/或竊聽瀏覽器是可能的。

如果你真的只想用一個普通的桌面應用程序來完成它是可想而知的(對當前打開的URL進行輪詢瀏覽器),但我強烈建議不要這樣做......它不會可靠地工作,一些應變的資源...

如果我必須實現這一點,我肯定會寫一個瀏覽器插件和/或http(s)代理...任何你爲什麼排除瀏覽器 - 爲此?

+0

通過輪詢瀏覽器你的意思是開發一個加載項輪詢瀏覽器? – Tady

+0

@Tady no - 我的意思是桌面應用程序輪詢(=定期詢問)瀏覽器(例如通過COM的IE)。 – Yahia

+0

@Tady BTW你可以建立一個代理並將其託管在桌面應用程序或Windows服務中......使用代理的主要原因是瀏覽器/操作系統必須配置爲使用它... – Yahia

0

假設,如果你的應用程序充當了用戶的瀏覽器的HTTP代理服務器,那麼是的..你可以攔截該銀行網站的請求,並給用戶的建議作出迴應..

+0

是否需要太多工作才能將HTTP代理功能添加到桌面應用程序中? – Tady

0

這是不可能的。 (至少沒有太多的工作和/或手動配置每一臺計算機上)

你有很多的問題需要解決:

  1. 你將如何從「瀏覽器」獲得「網址」?
  2. 安全性如何?
  3. 您應該如何確定是否啓用防病毒或防火牆?

讓我們劃分的「URL」成小塊(可以限制我們的HTTP協議):通常

HTTP是兩個IP-地址和兩個端口之間的TCP/IP連接,服務器在端口80上響應(如果您省略端口,則默認爲80)。示例URL:

http://123.123.123.123:456(以http連接到ip 123.123.123.123端口456)

然後我們有DNS;例如:

http://foobar.com =>http://123.123.123.123(dns翻譯爲foobar.com爲123.123.123。123)

現在,假設你添加一個路徑,您的網址,例如:

http://foobar.com/path/to/page.htm

那我們現在怎麼辦?在TCP/IP中沒有這樣的「路徑」。它在HTTP級別上。讓我們在一個非常基本的HTTP網址一看,這是翻譯的TCP/IP連接:

http://foobar.com/path/to/page.htm =>

  1. 客戶端查找foobar.com => 123.123.123.123
  2. 客戶端連接到123.123.123.123端口80
  3. 客戶以下數據發送給服務器:
 
GET /path/to/page.htm HTTP/1.1 
Host: foobar.com 


你打算如何使用tcp/ip-connections(及其「內容」)?

您有幾種選擇:

  • 過濾器 -
  • (安裝到網絡層敏感的東西,所有我已經試過造成不穩定和性能損失,除了麻煩防火牆...。)
  • 代理(你必須確保每一個瀏覽器已經通過代理重定向他們的網絡流量 - 沒有全局設置,每一個瀏覽器都有自己的方式)
  • 某種類型的插件的瀏覽器(你必須寫一個新的插件爲每個瀏覽器,並確保它啓用)

讓我們看看安全性 - 如果使用HTTPS(使用SSL的HTTP),則會引入另一個問題:每個網絡連接的內容都是加密的,除非您擁有密鑰(並且您沒有密鑰除非你自己提供,否則瀏覽器不會信任你的密鑰併發出大的警告,除非你在瀏覽器中安裝了你的密鑰。而你不希望這樣做 - 這是一個相當大的安全隱患。)

讓我們想象一下,你已經解決了這個問題,你怎麼知道的防病毒是否已安裝並啓用?和防火牆?每種防病毒和防火牆都有自己的方式。

+0

關於抗病毒可以使用WMI來完成。這並不困難。 – Tady

+0

我不需要翻譯網址或鏈接,因爲我知道這個鏈接是預定義的www.mybank.com,而且這個鏈接在我的應用程序中是一個常量,但無論如何感謝您的長回覆 – Tady

+0

您是否確切地知道哪些ip地址你應該找? (一個DNS查詢可能會給你一個IP,下一個可能會給你另一個..)這並不容易,只是查詢WMI - 我不會指望每個防病毒和防火牆軟件已經打擾我已經做了 – Onkelborg

0

如果您的.NET桌面應用程序用於當用戶點擊預定義的銀行網站顯示的通知。然後,考慮到備用答案所需的努力,從經驗(財務)來看,讓您的應用程序啓動鏈接將毫無意義。然後,您可以執行檢查,顯示通知,並且如果您使用桌面應用程序生成的唯一查詢字符串參數啓動網站,則瀏覽網站的用戶將擁有額外的安全層。

如果用戶沒有安裝您的應用程序,那麼不妨在第一時間完成所有這些檢查(通知用戶在用戶打開銀行網站後是否禁用防病毒軟件或其他安全軟件)。

相關問題