检查那个代理密码中的行尾
当从代理文件加载的端点无法通过身份验证时,请把记录分隔符与凭据内容区分开来。
手动输入时端点可以正常工作,而从文件加载时却失败。在轮换密码之前,请先检查记录的读取方式。
面向行的文件带有分隔符。如果解析器把末尾的换行符留在最后一个字段里,传给客户端的凭据就可能与你预期的不同。Windows 风格的 CRLF 让两个字节值得检查。
PHP 的 file() 支持 FILE_IGNORE_NEW_LINES,用于读取不含行尾分隔符的记录。请使用与该文件文档化格式相符的行为。
要小心那个流行的后续修复:对每个字段做 trim。空格也可能是真正的密码字符。删除所有前导和尾随空白会改变凭据,而不只是去掉记录终止符。
也要明确分隔符。非正式的冒号分隔格式在密码或 IPv6 地址含有冒号时可能产生歧义。按该格式读取记录,保留预期的密码字节,然后才在需要时为端点 URL 编码各组成部分。
诊断时,比较长度或受控的非机密测试值。打印真实密码或带凭据的完整 URL,会在解决一个很小的解析器错误时制造另一个问题。