android 限制浏览器等应用访问某个网站

您所在的位置:网站首页 如何设置浏览器只能访问一个网址 android 限制浏览器等应用访问某个网站

android 限制浏览器等应用访问某个网站

2024-07-05 21:15| 来源: 网络整理| 查看: 265

前言

最近有个需求,就是需要在服务器后台动态的禁止android 手机访问某些网址。

一般来说,像禁止访问某些网址这个需求,我们会在公司的PC 端见过,例如公司内网可能访问不了一些云盘之类的网站。这些要么是it在PC 端动了手脚,要么是直接将连接的网络进行了某种过滤操作导致。

拿到这个需求的时候。我心里想到了以下两种方法:

1.通过android 源码,追http 网络请求,在请求处选择性的禁止屏蔽某些网络访问。 2.使用android 原生提供的iptables。网络防火墙。

最后选择使用后者,iptables 来实现。毕竟人家都已经实现了,光拿来用就好了。

1.开始实现 命令测试

至于什么是iptables 。大家可以网上搜一搜。这里就不在赘述了。iptables 的命令这里也不再详细说了。这里主要说下我使用iptables 踩过的坑和遇到的问题,以及最后将问题迎刃而解的过程。

我直接在shell 命令行,通过命令执行iptables 测试,以上需求,验证是可行的。

首先 iptables -nvL 可以列出所有的规则 iptables -t filter -I INPUT -s 39.106.226.142 -j ACCEPT(允许访问39.106.226.142 网址) iptables -t filter -I INPUT -s 39.106.226.142 -j REJECT(拒绝访问39.106.226.142 网址)

注:39.106.226.142 ip 对应的CSDN 网址的ip,如果想要禁止其他的网址,可以在PC 端ping 一下对应网址,就会看到其ip。不过后面我才知道,iptables 是支持直接过滤url 的。但是我测试没成功。先暂且绕一下路,先把网址转换为ip 吧。(某些大型网站,一个域名会对应好多ip,所以,能用url 过滤,最好还是用url 过滤)

在shell 命令行执行以上命令后,再通过iptables -nvL 就可以看到我们禁止的网址被加入到iptables 规则中了。此时也已经生效了。我们的手机已经没有办法再响应39.106.226.142(CSDN)网址了。任何浏览器访问此网址都不行。

再分享一个命令 iptables -F 清除掉所有规则。

还要再说一点:网上查资料,iptables 共有INPUT,等几个链,但是用户也是可以自定义链的,光自定义一个链还不行,还需要将自定义的链与系统提供的原始链关联起来,否则在自定义链里面放任何规则都是不生效的。

在这里插入图片描述

2.代码执行命令

通过以上在shell 行输入命令的方式,验证可行,接下来就是要用代码去执行这些命令了。接下来问题就来了。

首先,用代码去执行命令,我们首先会想到 **Runtime.getRuntime().exec();**或者用以下的方法去执行

/* * args[0] : shell 命令 如"ls" 或"ls -1"; * args[1] : 命令执行路径 如"/" ; */ public static String execute(String[] cmmand, String directory) throws IOException { String result = ""; try { ProcessBuilder builder = new ProcessBuilder(cmmand); if (directory != null) { builder.directory(new File(directory)); } builder.redirectErrorStream(true); Process process = builder.start(); InputStream is = process.getInputStream(); byte[] buffer = new byte[256]; int readlen = 0; while ((readlen = is.read(buffer)) != -1) { byte[] str = new byte[readlen]; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3