Создание собственного браузера с белым списком Android - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь создать простой пользовательский браузер, который содержит белый список разрешенных веб-сайтов. Мой браузер - это просто веб-просмотр с адресной строкой. При сравнении запрошенного веб-сайта с белым списком, он работает нормально, если веб-сайт только www.yahoo.com. Если www.yahoo.com находится в белом списке, он перейдет на сайт. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я попадаю на www.yahoo.com, это их мобильный сайт, m.yahoo.com, и он не переходит ни на одну из своих ссылок, поскольку URL.getHostName () - это m.yahoo. com, который не равен www.yahoo.com, который находится в белом списке. Сейчас я просто использую URL.getHostName () для сравнения с белым списком. Есть ли лучший способ сравнить запрашиваемый веб-сайт с белым списком?

1 Ответ

0 голосов
/ 28 июня 2011

Есть несколько способов решения этой проблемы.

1) Вы можете просто добавить ссылки m.yahoo.com в свой белый список. Это может быть самое простое решение.

2) В зависимости от того, подходит ли это, вы можете изменить строку user-agent вашего браузера, чтобы идентифицировать себя как браузер на рабочем столе. Вкратце, вы вызываете getSettings() в WebView и вызываете его метод setUserAgentString(), передавая строку агента пользователя из популярного настольного веб-браузера.

3) Вы можете написать небольшой Java-код для разбора URL.getHostName(), чтобы сократить имя хоста только до имени домена верхнего уровня (например, "m.yahoo.com" -> "yahoo.com"), а затем сравнить с белым списком.

4) Вы можете сопоставить белый список с шаблонами имен хостов, а не с простыми строками. Сделайте каждую запись в вашем белом списке регулярным выражением, которое соответствует различным хостам. Затем вы просто сопоставляете каждую запись в своем белом списке с URL.getHostName(). Если вы новичок в регулярных выражениях или регулярных выражениях в Java, есть множество учебных пособий , а справка доступна здесь по переполнению стека.

...