a1010200329 2019-05-22 11:12 采纳率: 0%
浏览 838

安卓实现上网白名单(指定域名能正常访问),除了iptables能实现还有什么方法能实现吗?

我看了很多博客,用iptables来实现上网百名单,基本都是说要有root权限要么就是需要改动android底层源码,这样实现起来比较操蛋,想请问还有什么方法可以做到指定几个域名能上,其他的一律拦截。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 18:12
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android中,我们可以使用http://www.example.comhttps://example.com这样的URL作为白名单。然而,由于安全原因,我们不能直接修改系统级的URL解析规则。所以,我们需要一个中间件来处理这些URL。

    你可以使用Apache的Nginx作为你的中间件。以下是一个简单的示例:

    1. 安装Nginx:

      sudo apt-get install nginx
      
    2. 创建一个新的Nginx配置文件,并添加以下内容:

      server {
          listen 80;
          server_name example.com;
      
          location / {
              proxy_pass http://localhost:3000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
      }
      
      server {
          listen 443 ssl;
          server_name example.com;
      
          ssl_certificate /etc/ssl/certs/example.com.crt;
          ssl_certificate_key /etc/ssl/private/example.com.key;
      
          location / {
              proxy_pass http://localhost:3000;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
      }
      

    这个配置会将所有来自example.com的请求转发到本地的localhost:3000服务器上。

    请注意,你需要根据实际情况替换example.com.crtexample.com.key为实际的证书文件路径。此外,你可能需要调整server_name字段以适应不同的主机名。

    1. 启动Nginx服务并检查是否正确工作。
    sudo systemctl start nginx
    

    然后,你可以通过浏览器访问http://example.comhttps://example.com来测试你的设置。

    注意:虽然这种方法可以解决大部分问题,但仍然存在一些限制和风险,例如SSL证书的管理、HTTPS的安全性和性能等。在生产环境中,你应该考虑使用专业的Web应用防火墙或者全栈安全解决方案。

    评论

报告相同问题?