2012-03-19 29 views
0

我在做一個可以檢測釣魚網站的項目。即當用戶在瀏覽器中瀏覽網頁時點擊鏈接時,鏈接將檢查它是否是釣魚網頁。如何監控用戶點擊一個網址並提取網址?

不過,我不知道如何識別,如果用戶在點擊一個鏈接時,他們執行輕擊動作。

而且,即使在一個網址點擊可以被識別,如何提取的URL字符串形式,這樣我可以檢查鏈接?

似乎沒有可供我使用的瀏覽器的API。

回答

0

不能掛接到默認的瀏覽器應用程序。您需要編寫您自己的WebBrowser應用程序,以便您可以截獲網頁上的水龍頭。

1

有一個API。使用IntentFilter。這是一個例子。請注意,數據字段是可選的:

<activity 
     android:name="MyActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <data 
       android:host="127.0.0.1" 
       android:path="/path" 
       android:port="18080" 
       android:scheme="http" /> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
</activity> 

爲了得到URI使用這個片段在你的活動:

Intent intent = MyActivity.this.getIntent(); 
Uri uri = intent.getData(); 
+0

我忘了你可以註冊你的應用程序的某些事件。如果用戶選擇該應用程序爲默認,或者如果他們選擇它從名單雖然 – Mimminito 2012-03-19 16:20:34

+0

@Mimminito這是真的,但這其實還是一個可行的解決方案,這是唯一可行的。您可以簡單地讓您的應用程序「轉發」該意圖,如果該應用程序是一個良好的網址,或者在檢測爲釣魚網址時顯示警告,然後讓用戶繼續或退出。無論如何,假設你想在URL被加載之前捕捉它(儘管這可能不是100%的要求,它肯定會更好),所以沒有其他解決方法。 – kabuko 2012-03-19 18:18:48

+0

是的,這是一個可行的選擇,我現在可以看到的最好的選擇。 – Mimminito 2012-03-19 20:34:53

1

你可以連接到默認的瀏覽器應用程序。一些瀏覽器數據可通過內容提供商獲得。下面的代碼將讓你的用戶訪問的URL列表:

String columns[] = new String[] { Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.DATE, Browser.BookmarkColumns._ID }; 
Cursor c = managedQuery(Browser.BOOKMARKS_URI, columns, "bookmark!=1", null, null); 

您可以將瀏覽器歷史ContentObserver當用戶訪問一個新的頁面通知。通過這種方式,你應該即使用戶已經安裝了非標準的瀏覽器警告。

getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, new MyContentObserver(handler));