如何使用 Squid 拦截代理更改从我的机器发出的所有 http 请求的用户代理?

如何使用 Squid 拦截代理更改从我的机器发出的所有 http 请求的用户代理?

我想更改用户代理全部从本机发出的 HTTP 请求。更改每个浏览器中的用户代理很容易,但其他应用程序也会发出 http 请求。抓住他们所有人是至关重要的。特别是,有一个应用程序(Steam)无法选择更改用户代理。

因此,我想运行一个拦截代理来更改从我的计算机发出的所有 http 请求的用户代理。

我写了这个squid.conf

# Squid normally listens to port 3128
http_port 3128
http_port 3127 intercept

# i don't care for caching. -Matt
cache deny all

request_header_access User-Agent deny ALL

当我将浏览器指向它时它就起作用了。但是我怎样才能让 Squid 拦截我的机器发出的所有 http 请求呢?我不明白如何让它捕获东西。 iptables?防火墙?

答案1

安装 nginx 作为透明代理。这是一个示例配置节,展示如何更改用户代理:

http {
    server {
        location / {
            proxy_pass              http://$host$request_uri;
            proxy_set_header        "User-Agent" "custom agent";
            proxy_connect_timeout   60;
            proxy_send_timeout      60;
            proxy_read_timeout      60;
        }
    }
}

请查看文档代理设置头了解详情。

答案2

设置一个透明代理来动态重写请求标头。

答案3

为squid3透明代理写..

http_port 3127  transparent

强制流量从 80 流向您的端口 3127

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination Server.ip.Address : 3127

为了确保该路由关闭/阻止端口 80,
来自 LAN 网络的所有流量都无法访问端口 80。

iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP

答案4

您需要您的代理才能在“透明的“或者更正确地说是“拦截”模式。拦截是使用其他工具(通常是防火墙)在不同的 OSI 级别上完成的。上面的链接将向您分享相当多的详细信息,请不要犹豫。

相关内容