Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提供代理验证时,主机名应该大小写不敏感 | Host should be case-insensitive when supplying proxy auth #727

Closed
wwbfred opened this issue Mar 14, 2016 · 15 comments
Assignees
Labels

Comments

@wwbfred
Copy link

wwbfred commented Mar 14, 2016

用户名密码配置无误,对方发回来的也的确是407,SO貌似也收到了请求,但并没有使用配置中的用户名密码.
Event 信息
3693: PROXY_CLIENT_SOCKET
Start Time: 2016-03-14 17:02:21.012

t=415905 [st= 0] +SOCKET_ALIVE [dt=142]
--> source_dependency = 3692 (PROXY_CLIENT_SOCKET_WRAPPER)
t=415905 [st= 0] HTTP2_PROXY_CLIENT_SESSION
--> source_dependency = 3524 (HTTP2_SESSION)
t=415905 [st= 0] +HTTP_TRANSACTION_TUNNEL_SEND_REQUEST [dt=1]
t=415905 [st= 0] HTTP_TRANSACTION_SEND_TUNNEL_HEADERS
--> CONNECT clients4.google.com:443 HTTP/1.1
Host: clients4.google.com:443
Proxy-Connection: keep-alive
User-Agent: Chrome WIN 49.0.2623.87 (d177478d466b84ab06f0f48081fc30e3b04be6ca-refs/branch-heads/2623@{#592}) channel(stable)
t=415906 [st= 1] -HTTP_TRANSACTION_TUNNEL_SEND_REQUEST
t=415906 [st= 1] +HTTP_TRANSACTION_TUNNEL_READ_HEADERS [dt=141]
t=416047 [st=142] HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS
--> HTTP/1.1 407 Proxy Authentication Required
status: 407 Proxy Authentication Required
version: HTTP/1.1
content-length: 24
content-type: text/html
date: Mon, 14 Mar 2016 09:02:34 GMT
mime-version: 1.0
proxy-authenticate: Basic realm="(*****Get password from xxx ****)"
server: squid/3.1.20
x-cache: MISS from localhost
x-cache-lookup: NONE from localhost:9999
x-squid-error: ERR_CACHE_ACCESS_DENIED 0
t=416047 [st=142] -HTTP_TRANSACTION_TUNNEL_READ_HEADERS
--> net_error = -127 (ERR_PROXY_AUTH_REQUESTED)
t=416047 [st=142] SOCKET_BYTES_RECEIVED
--> byte_count = 24
t=416047 [st=142] -SOCKET_ALIVE

插件日志中有这样一句:
ProxyAuth xxx.com:443 0 undefined

@FelisCatus
Copy link
Owner

请截图代理情景模式设置的部分,以供分析问题,谢谢!请注意适当遮挡/修改服务器和端口等信息,以保护您的个人隐私。不需要截图弹出的用户名/密码对话框,更不要提供用户名/密码。

@wwbfred
Copy link
Author

wwbfred commented Mar 14, 2016

image
需要的是这个东西么?

@FelisCatus
Copy link
Owner

是的,谢谢。

请问实际使用的时候是全局使用吗?还是在自动切换中使用?请换成另一种再尝试一下。

此外,如果代理服务器使用的是域名,请换成对应的 IP 地址试试看。

@wwbfred
Copy link
Author

wwbfred commented Mar 15, 2016

使用的是全局代理没错.
因为网站启用了证书,换成IP地址直接会返回ERR_PROXY_CERTIFICATE_INVALID.
我觉得SO的确收到了407,但它返回的用户名密码是 0 undefined,而不是我所提供的...请问是这么回事么?

@FelisCatus
Copy link
Owner

日志中的0是指第一次尝试,而undefined是未找到匹配的代理服务器。可能 Chrome 提供的代理服务器地址和预想的不一样?

请问填写代理服务器域名的时候,是否有使用大写字母或者中文,或者其他特殊字符?

能否提供完整的 SwitchyOmega 日志?(日志中不会有任何用户名密码,但请注意适当屏蔽情景模式名称等信息)

@wwbfred
Copy link
Author

wwbfred commented Mar 15, 2016

Options << Options#applyProfile [
"TEST"
]
Options << Options#updateProfile [
[
"TEST"
]
]
Options << Options#updateProfile []
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy
ProxyAuth jp1.xxx.com:443 1 undefined
ProxyAuth jp1.xxx.com:443 1 undefined
Options << Options#patch [
{
"+TEST": {
"fallbackProxy": {
"host": [
"jp1.xxx.com",
"HK.xxx.com"
]
},
"revision": [
"15378a912db",
"15378aa6f9a"
]
}
}
]
Options << Options#applyProfile [
"TEST",
{
"update": false
}
]
ProxyAuth hk.xxx.com:443 0 undefined
ProxyAuth hk.xxx.com:443 0 undefined
ProxyAuth hk.xxx.com:443 0 undefined

其中jp1是小写,HK是大写.
但都需要输入密码...

@FelisCatus
Copy link
Owner

ProxyAuth hk.xxx.com:443 0 undefined 这个看来是因为大小写问题了,赶紧去试试看换成小写能不能解决吧。

我考虑一下要不要把域名全都转换为小写再匹配。按理说域名是大小写不敏感的, IP 地址(包括IPv6)也是不敏感,所以转换成小写应该可以吧……


ProxyAuth jp1.xxx.com:443 0 TEST.fallbackProxy 这个是匹配成功了,尝试使用了一次密码。但是这个密码没有验证通过,所以又重试了一次 ProxyAuth jp1.xxx.com:443 1 undefined,此时没有其他的密码可以输入了,所以最终弹出了窗口。

关于用户名密码没有验证成功的问题……如果确定用户名密码都输入正确的话,有时候用户名密码中有特殊字符也会导致验证失败,见 #111 等。

@wwbfred
Copy link
Author

wwbfred commented Mar 15, 2016

多谢耐心回复,找到原因了.
包括域名用户名密码在内的所有信息,SO好像全部会自动转换为小写.
所以域名用户名密码必须全部设置为小写,才能够通过验证.
我的情况是之前是域名和密码内含有大写,所以怎么换都验证不通过.

@FelisCatus
Copy link
Owner

刚才用 polipo 测试过了,用户名和密码都是大小写敏感,而且 SO 能正确处理密码大小写。

@FelisCatus
Copy link
Owner

测试环境是 Polipo, Chrome 49.0.2623.87, Linux.

@wwbfred
Copy link
Author

wwbfred commented Mar 15, 2016

我又测试了一下,是这样:
1.域名在SO中不可填写大写.
2.用户名在服务器端设置为小写的情况下,SO中大小写可以随意填.在服务器端设置为大写的情况未知.
3,密码在服务器端只能设置小写,若设置大写则在SO中无论怎样填写都会出错;在SO中只能填写小写,在服务器端设置为小写的情况下,SO中填写大写会出错.
Chrome 版本 49.0.2623.87 m (64-bit) ,Windows 10,版本10.0.10586 服务器那边应该是squid/3.1.20

@FelisCatus
Copy link
Owner

我这边还是先把域名问题处理一下吧。

然后关于用户名密码,既然 Windows 和 Linux 表现不同,那么更像是 Chrome 的问题……要不您去 chromium 那边提交一个 issue?

@wwbfred
Copy link
Author

wwbfred commented Mar 15, 2016

谢谢!有时间我去那边反馈一下...
感觉Windows平台的Chrome每次更新都会有点副作用...感觉很坑爹...

@FelisCatus FelisCatus changed the title 使用https代理时用户名密码无效 提供代理验证时,主机名应该大小写不敏感 | Host should be case-insensitive when supplying proxy auth Mar 15, 2016
@FelisCatus FelisCatus self-assigned this Mar 15, 2016
@FelisCatus FelisCatus added the bug label Mar 15, 2016
@FelisCatus
Copy link
Owner

我刚才翻了半天的 Chromium 源码,没有看到关于大小写转换的部分。不知道是什么鬼……

@FelisCatus
Copy link
Owner

v2.3.18 已经支持大写主机名。

Host names with uppercase letters are authenticated correctly as of v2.3.18.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants