2012-03-19 48 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));