![Squid 代理:URL 中出现“%25”(百分号)时,会出现 400 错误请求](https://linux22.com/image/674732/Squid%20%E4%BB%A3%E7%90%86%EF%BC%9AURL%20%E4%B8%AD%E5%87%BA%E7%8E%B0%E2%80%9C%2525%E2%80%9D%EF%BC%88%E7%99%BE%E5%88%86%E5%8F%B7%EF%BC%89%E6%97%B6%EF%BC%8C%E4%BC%9A%E5%87%BA%E7%8E%B0%20400%20%E9%94%99%E8%AF%AF%E8%AF%B7%E6%B1%82.png)
我有一个运行良好的 Squid 代理,除了这个问题:
如果 URL%25
中包含百分号,则会收到 400 Bad Request并Bad Request
显示到网络浏览器中。
示例 URL: http://www.amazon.com/25%25-Percent-Off-Stickers-Adhesive/dp/B00J0IBJ0S/
日志:
2016 年 1 月 12 日:18:40:28 -0600 429 MY.IP.IS.HERE TCP_MISS/400 310 GEThttp://www.amazon.com/25%25-Percent-Off-Stickers-Adhesive/dp/B00J0IBJ0S/- ROUNDROBIN_PARENT/三文本/html
我不确定这是错误还是配置错误。我有一个如上所示的循环设置。以下是输出squid3 -v
:
Squid Cache:版本 3.1.19 配置选项:'--build=x86_64-linux-gnu''--prefix=/usr''--includedir=${prefix}/include''--mandir=${prefix}/share/man''--infodir=${prefix}/share/info''--sysconfdir=/etc''--localstatedir=/var''--libexecdir=${prefix}/lib/squid3''--srcdir=.' '--禁用维护者模式' '--禁用依赖性跟踪' '--禁用静默规则' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--with-cppunit-basedir=/usr' '--启用内联' '--启用async-io=8' '--启用storeio=ufs,aufs,diskd' '--启用removal-policies=lru,heap' '--启用延迟池' '--启用缓存摘要' '--启用下划线' '--启用icap-客户端' '--启用follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,DB,POP3,getpwnam,squid_radius_auth,multi-domain-NTLM' '--enable-ntlm-auth-helpers=smb_lm,' '--enable-digest-auth-helpers=ldap,password' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-arp-acl' '--enable-esi' '--enable-zph-qos' '--enable-wccpv2' '--disable-translation' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security' --with-squid=/build/squid3-FzlLQ3/squid3-3.1.19
uname -a
:
Linux MyHostName 3.13.0-44-generic #73~precise1-Ubuntu SMP 星期三 十二月 17 00:39:15 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
(这是一个 Ubuntu 12.04.5 LTS 服务器)
破解这个 URL 的方法很简单,就是删除 但这%25
不起作用全部目的地网站。
当不通过代理时,URL 可以正常工作。
感谢您的任何想法,我愿意提供更多配置信息。
答案1
我使用 squid 已有 15 年了。事实上,我就是用它来写这条消息的。我测试了您提供的 URL,它运行正常。关于您的安装,我只能说几点,但仍然:
- 您的 squid 安装已有一千年历史。尽快升级到 3.5.x 以上。
- 从您的访问日志中,我可以根据状态判断您正在使用代理链
ROUNDROBIN_PARENT/three
。这意味着问题可能不在您的 squid 中,而是在父缓存中。您应该进一步调查。