在Android中开发Web监视器
我想监控/过滤用户在Android中打开的网站 我知道如何使用浏览器历史记录中的ContentObserver检索上次访问的URL(在Android默认浏览器中)在Android中开发Web监视器,android,security,browser,filtering,monitoring,Android,Security,Browser,Filtering,Monitoring,我想监控/过滤用户在Android中打开的网站 我知道如何使用浏览器历史记录中的ContentObserver检索上次访问的URL(在Android默认浏览器中) private static class BrowserObserver extends ContentObserver { private static String lastVisitedURL = ""; private static String lastVisitedWebsite = ""; //
private static class BrowserObserver extends ContentObserver {
private static String lastVisitedURL = "";
private static String lastVisitedWebsite = "";
//Query values:
final String[] projection = new String[] { Browser.BookmarkColumns.URL }; // URLs
final String selection = Browser.BookmarkColumns.BOOKMARK + " = 0"; // history item
final String sortOrder = Browser.BookmarkColumns.DATE; // the date the item was last visited
public BrowserObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
onChange(selfChange, null);
}
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange);
//Retrieve all the visited URLs:
final Cursor cursor = getContentResolver().query(Browser.BOOKMARKS_URI, projection, selection, null, sortOrder);
//Retrieve the last URL:
cursor.moveToLast();
final String url = cursor.getString(cursor.getColumnIndex(projection[0]));
//Close the cursor:
cursor.close();
if ( !url.equals(lastVisitedURL) ) { // to avoid information retrieval and/or refreshing...
lastVisitedURL = url;
//Debug:
Log.d(TAG, "URL Visited: " + url + "\n");
}
}
}
要注册我使用的ContentObserver,请执行以下操作:
browserObserver = new BrowserObserver(new Handler());
getContentResolver().registerContentObserver(Browser.BOOKMARKS_URI, true, browserObserver);
取消注册:
getContentResolver().unregisterContentObserver(browserObserver);
这很有效。但是,通过这种方式,我只能在浏览器加载URL后才能对其进行分析
现在,有没有办法在浏览器在Android中实际加载URL之前检索URL?一个有助于创建Web监视器的解决方案,就是创建自己的VPN服务,以便监视所有设备流量。NetGuard项目就是一个很好的例子 请注意,在某些设备中,系统不会通过VPN某些应用程序(例如,在三星设备中,三星Web浏览器不会通过系统VPN转发,在Android 6.0的S5中检查) 您的应用程序还应该请求作为VPN服务使用的权限,但一旦用户授予此权限,它就可以监视和过滤大部分设备网络流量