我想更改用户代理全部从本机发出的 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 级别上完成的。上面的链接将向您分享相当多的详细信息,请不要犹豫。