【问题标题】:Transparent Webproxy Application with iptables带有 iptables 的透明 Webproxy 应用程序
【发布时间】:2012-03-01 16:30:19
【问题描述】:

我正在尝试用 Java 在 Android 上编写一个简单的代理应用程序来过滤 URL。它所做的基本上是读取传入Socket 上的所有内容,将所有内容写入服务器,反之亦然。如果我将我的 Opera 移动浏览器指向它,一切正常。我想让它透明,所以我尝试通过这些 iptables 规则将所有流量重定向到它:

iptables -t nat -A OUTPUT -m owner --uid-owner 10090 -j ACCEPT
iptables -t nat A OUTPUT -p tcp --dport 80 -j REDIRECT -p tcp --to-port 8081

然后我收到一条错误消息,指出“服务器通信失败”。

可能是在透明模式下使用代理时,它的行为必须有所不同,例如像网络服务器?我在某处读到,当透明使用 squid 时,您必须将其配置为“透明模式”。

还是有完全不同的原因?

【问题讨论】:

    标签: android proxy web transparent iptables


    【解决方案1】:

    回答我自己的问题。

    iptable 规则完美运行,所以这不是问题。错误消息使我走上了正轨。它指出“服务器通信失败”,所以我的代理响应浏览器的方式有问题。

    原来它没有向浏览器发送任何 HTTP 标头,因为我使用 URLConnection 与真正的网络服务器通信。 URLConnection 负责 HTTP 协议,这就是浏览器在响应中看不到任何标头的原因。然后我切换到Socket API 与网络服务器通信,然后将所有内容转发回浏览器,其中包括标题和所有内容,并且成功了!

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 2014-02-14
      • 1970-01-01
      • 2015-05-02
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多