使用白名单 android 创建自定义浏览器

发布于 2024-11-17 08:21:15 字数 319 浏览 5 评论 0原文

我正在尝试制作一个简单的自定义浏览器,其中包含允许的网站白名单。我的浏览器只是一个带有地址栏的网络视图。将请求的网站与白名单进行比较时,如果该网站只是 www.yahoo.com,则效果很好。如果 www.yahoo.com 在白名单上,它将导航到该网站。我遇到的问题是,当我访问 www.yahoo.com 时,它是他们的移动网站“m.yahoo.com”,并且不会导航到他们的任何链接,因为 URL.getHostName() 是 m.yahoo。 com 不等于白名单上的 www.yahoo.com。现在我只是使用 URL.getHostName() 与白名单进行比较。有没有更好的方法将请求的网站与白名单进行比较?

I'm trying to make a simple custom browser that contains a whitelist of allowed websites. My browser is just a webview with an address bar. When comparing the requested website to the whitelist it works fine if the website is just www.yahoo.com. If www.yahoo.com is on the whitelist it will navigate to the website. The problem I am running into is when I get to www.yahoo.com it is their mobile site, "m.yahoo.com" and will not navigate to any of their links, because URL.getHostName() is m.yahoo.com which does not equal www.yahoo.com that is on the whitelist. Right now I am just using URL.getHostName() to compare to the whitelist. Is there a better way to compare the requested website to the whitelist?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

乱了心跳 2024-11-24 08:21:15

有几种方法可以解决这个问题。

1) 您只需将 m.yahoo.com 链接添加到您的白名单即可。这可能是最简单的解决方案。

2) 根据是否合适,您可以更改浏览器的用户代理字符串以将其自身标识为桌面浏览器。简而言之,您在 WebView 上调用 getSettings() 并调用其 setUserAgentString() 方法,从流行的桌面 Web 浏览器传入用户代理字符串。

3) 您可以编写一些 Java 代码来解析 URL.getHostName(),以将主机名精简为仅顶级域名(例如“m.yahoo.com< /code>" -> "yahoo.com") ,然后与白名单进行比较。

4) 您可以对主机名模式进行白名单匹配,而不是简单的字符串。将白名单中的每个条目设为与各种主机匹配的正则表达式。然后,您只需将白名单中的每个条目与 URL.getHostName() 进行匹配即可。如果您不熟悉正则表达式或 Java 中的正则表达式,有很多可用的教程< /a>,并且可以在 Stack Overflow 上找到帮助。

There's a few ways you can approach this problem.

1) You could simply add the m.yahoo.com links to your whitelist. That might be the simplest solution.

2) Depending on if it's appropriate, you could change the user-agent string of your browser to identify itself as a desktop browser. Briefly, you call getSettings() on the WebView and call its setUserAgentString() method, passing in the user agent string from a popular desktop web browser.

3) You could write a little Java code to parse the URL.getHostName() to strip the hostname down to only the top-level domain name, (e.g. "m.yahoo.com" -> "yahoo.com") , and then compare against the whitelist.

4) You could do your whitelist matching on hostname patterns, rather than simple strings. Make each entry in your whitelist a regular expression that matches a variety of hosts. Then you just match each entry in your whitelist against URL.getHostName(). If you're new to regular expressions, or regular expressions in Java, there's plenty of tutorials available, and help is available here on Stack Overflow.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文