httpx 如何设置代理认证(Proxy-Authorization)
技术百科
舞姬之光
发布时间:2026-01-27
浏览: 次 httpx 的 -proxy 参数不支持直接传入带认证的代理 URL,因其底层 fasthttp 不解析 URL 中的用户密码字段;需用 -http-proxy-header 手动注入 Base64 编码的 Proxy-Authorization 头,格式为“Basic base64(username:password)”。
httpx 的 -proxy 参数不支持直接传入带认证的代理 URL
很多人尝试用 httpx -proxy http://user:pass@host:port 发现认证失败,甚至返回 407 Proxy Authentication Required。这是因为 httpx(截至 v1.6.x)底层使用 fasthttp,而 fasthttp 默认**不解析 URL 中的用户密码字段**来设置 Proxy-Authorization 头——它只提取 host/port 建立连接,认证需手动注入。
正确方式:用 -http-proxy-header 手动添加 Proxy-Authorization 头
必须将 Base64 编码后的 username:password 通过 -http-proxy-header 注入,且注意格式和编码细节:
- 编码前字符串必须是
username:password(不含协议、无空格、无额外斜杠) - 使用标准 Base64(非 URL-safe),例如
echo -n "admin:123" | base64→YWRtaW46MTIz - Header 值格式为
Basic YWRtaW46MTIz(注意Basic后有一个空格) - 完整命令示例:
httpx -u https://example.com -proxy http://127.0.0.1:8080 -http-proxy-header "Proxy-Authorization: Basic YWRtaW46MTIz"

常见错误与绕过限制的替代方案
如果手动编码出错或代理要求 Digest 认证(httpx 当前完全不支持),会出现连接挂起、超时或 407 持续返回。此时可考虑:
- 换用支持完整代理认证的工具,如
curl -x user:pass@host:port或gau | httpx -http-proxy-header ...配合外部代理链 - 在本地启动一个无认证的中间代理(如
mitmproxy --mode upstream:http://user:pass@real-proxy:port),再让httpx连这个中间代理 - 确认代理服务是否强制校验
Proxy-Connection或User-Agent头,必要时用-H补充
注意 fasthttp 的底层限制会影响所有基于它的工具
不只是 httpx,naabu、katana 等同样基于 fasthttp 的项目都继承这一行为。如果你写 Go 脚本调用 fasthttp.ProxyClient,也得自己构造 Proxy-Authorization 并设到 Request.Header.Set(),不能依赖 WithProxyURL() 自动解析。
# 工具
# word
# go
# curl
# 编码
# stream
# red
# asic
# echo
# proxy
# httpx
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win10怎样卸载自带Edge_Win10卸载Ed
- 如何自定义Windows终端的默认配置文件?(Po
- c++ nullptr与NULL区别_c++11空
- Windows10蓝屏代码DPC_WATCHDOG
- Win11怎么查看硬盘型号_Windows 11检
- Windows任务计划服务异常原因_任务调度失败的
- MAC如何隐藏文件夹及文件_MAC终端命令隐藏与第
- c# Task.Yield 的作用是什么 它和Ta
- php删除数据怎么加限制_带where条件删除避免
- Windows如何查看和管理已安装的字体?(字体文
- VSC怎么配置PHP的Xdebug_远程调试设置步
- Win11如何隐藏桌面图标 Win11一键隐藏/显
- 短链接怎么自定义还原php_修改解码规则适配需求【
- 如何在 Go 中正确反序列化 XML 多节点数组(
- Windows10如何删除Windows.old_
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- 如何在Golang中编写端到端测试_Golang
- Win11局域网共享怎么设置 Win11文件夹网络
- 如何快速验证Golang安装是否成功_运行go v
- Windows10怎么查看系统激活状态_Windo
- Windows 11如何查看系统激活密钥_Wind
- php和redis连接超时怎么办_phpredis
- Mac自带的词典App怎么用_Mac添加和使用多语
- 一文教你快速开通网站LOGO图
- Win11键盘快捷键大全_Windows 11常用
- 如何使用Golang开发简单的聊天室消息存储_Go
- LINUX怎么进行文本内容搜索_Linux gre
- 如何使用Golang安装API文档生成工具_快速生
- Win11系统更新后黑屏怎么办 Win11更新黑屏
- 如何在JavaScript中动态拼接PHP的bas
- PHP怎么接收前端传的时间戳_处理时间戳参数转换技
- Win11怎么设置任务栏图标大小_Windows1
- Win11快速助手怎么用_Win11远程协助连接教
- 如何使用Golang进行HTTP服务性能测试_测量
- Golang如何避免指针逃逸_Golang逃逸分析
- 电脑无法识别U盘怎么办 Windows磁盘管理与驱
- Windows系统时间服务错误_W32Time服务
- Windows10系统怎么查看防火墙状态_Win1
- Python装饰器复用技巧_通用能力解析【教程】
- Windows蓝屏错误0x00000023怎么修复
- 企业SEO优化选择网站建设模板的技巧
- 如何使用Golang recover捕获panic
- Django 密码修改后会话失效的解决方案
- Linux怎么查找死循环进程_Linux系统负载分
- c++中explicit(bool)的用法 c++
- Win11如何暂停系统更新 Win11暂停更新最长
- Mac怎么给文件夹加密_Mac创建加密磁盘映像教程
- Win10系统字体模糊怎么办_Windows10高
- MAC怎么截图并快速编辑_MAC自带截图快捷键与标
- Windows音频驱动无声音原因解析_声卡驱动错误


QQ客服