我正在尝试制作一个简单的自定义浏览器,其中包含允许网站的白名单。我的浏览器只是一个带有地址栏的 web 视图。将请求的网站与白名单进行比较时,如果该网站只是 www.yahoo.com,则可以正常工作。如果 www.yahoo.com 在白名单上,它将导航到该网站。我遇到的问题是当我访问 www.yahoo.com 时,它是他们的移动网站“m.yahoo.com”,并且不会导航到他们的任何链接,因为 URL.getHostName() 是 m.yahoo。 com 不等于白名单中的 www.yahoo.com。现在我只是使用 URL.getHostName() 与白名单进行比较。有没有更好的方法将请求的网站与白名单进行比较?
user631063
问问题
1893 次
1 回答
0
有几种方法可以解决这个问题。
1)您可以简单地将m.yahoo.com
链接添加到您的白名单。这可能是最简单的解决方案。
2) 根据是否合适,您可以更改浏览器的用户代理字符串以将自己标识为桌面浏览器。简而言之,您调用getSettings()
WebView 并调用其setUserAgentString()
方法,从流行的桌面 Web 浏览器传入用户代理字符串。
3) 您可以编写一些Java 代码来解析将URL.getHostName()
主机名剥离为仅顶级域名(例如“ m.yahoo.com
”->“ yahoo.com
”),然后与白名单进行比较。
4)您可以对主机名模式进行白名单匹配,而不是简单的字符串。使白名单中的每个条目成为匹配各种主机的正则表达式。然后,您只需将白名单中的每个条目与URL.getHostName()
. 如果您不熟悉正则表达式或 Java 中的正则表达式,可以使用大量教程,并且可以在 Stack Overflow 上获得帮助。
于 2011-06-28T18:11:41.820 回答