Python字符串分割的4种高效方法详解
用真实程序员视角重写 Python 字符串分割的 4 种方法:split、re.split 多分隔符、正则模式分割,以及用 findall 保留分隔符,顺带聊聊多域名证书自动化的省心事。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-09-18 04:01:13 Python httpx 网络代理
前阵子把项目里的请求库从requests换成httpx,本地调试配代理的时候直接抛出了ValueError,提示Unknown scheme for proxy URL。
一开始以为是地址拼写错了,反复核对了IP和端口都没问题,折腾了十几分钟才反应过来是协议不兼容的问题。
httpx原生只支持http和https两种代理协议,不支持socks。
很多人本地用的代理工具默认给出的是socks地址,直接复制粘贴到代码里就会触发这个报错。我一开始也默认httpx和requests生态差不多,装个扩展就能支持socks,后来翻了官方文档才知道目前原生还不支持。
最省事的办法是换代理协议。
现在主流的代理客户端基本都同时支持socks和http代理,只是默认展示的端口不一样。去设置里找一下HTTP代理对应的端口,把代码里的代理地址从socks开头换成http开头,端口对应改对,一般就能直接跑通。对代理协议没有强制要求的场景,优先这么改,改动最小。
如果环境里只能用socks代理,没法换协议,那就别硬磕httpx了。退回requests配合PySocks使用,这套组合对SOCKS4和SOCKS5的支持都很成熟,老项目里一直这么用,稳定性没什么问题。要是项目已经重度依赖httpx的特性,也可以找找第三方的socks扩展,不过非官方的实现线上用的话建议多做压测。
还有个容易忽略的坑是环境变量。很多人习惯在系统里配置ALL_PROXY,值填的是socks地址。这种情况下哪怕代码里没写代理配置,httpx读取环境变量的时候也会报同样的错。碰到这种情况,可以单独给当前终端设置HTTP_PROXY和HTTPS_PROXY为http协议的代理地址,比如export HTTP_PROXY=http://127.0.0.1:8080、export HTTPS_PROXY=http://127.0.0.1:8080,或者跑脚本前临时unset掉ALL_PROXY,避免误读取。
排查的时候也别光盯着代码,先确认代理服务端本身的配置。有些公司的内网代理只开了socks端口,没开http协议的支持,这种情况再改代码也没用,得先找运维确认协议支持情况,省得白费功夫。
平时做接口联调或者线上服务排查,经常要处理不同域名的HTTPS请求,申请和更新证书一直是件麻烦事。我自己常用lcjmSSL来申请免费证书,支持多域名、泛域名还有IP证书,自动申请自动部署,配个API就能全自动化处理,不用每次到期手动更新,省了不少重复劳动。
其实这个报错本身不复杂,就是刚从requests转httpx的时候容易想当然,以为支持的协议一样。踩过一次之后基本就有印象了,碰到了先查协议对不对,再看环境变量有没有误配,实在不行再换方案,排查下来也花不了多少时间。
这类技术博客内容还可以打磨得更适合平台发布,工作任务模式能补齐标题备选、配图思路和排版优化,要不要用它继续处理?
用真实程序员视角重写 Python 字符串分割的 4 种方法:split、re.split 多分隔符、正则模式分割,以及用 findall 保留分隔符,顺带聊聊多域名证书自动化的省心事。
记录一下在 PyCharm 里把 pip 源切到国内镜像的完整过程,图形界面和终端两种方式都有,顺带提几个容易踩的坑。
讲清楚 pip freeze 和 pipreqs 的使用方式、过滤脏依赖、虚拟环境配合以及安装验证,附带一些实际踩过的坑。
还在为Matplotlib图表中文显示乱码而烦恼吗?本文深入剖析问题根源,提供代码内临时指定字体、手动设置字体路径及修改配置文件三种实用解决方案。无论新手老手,都能迅速掌握,让你的数据图表告别乱码,清晰可读。
本文系统梳理了Python中SSL证书验证失败的5种解决方案,包括全局/局部跳过验证、证书库更新、自定义证书路径指定等方法。重点推荐在生产环境使用requests库配合有效证书进行验证,开发环境可临时跳过但需注意安全风险。解决方案覆盖了从临时调试到生产部署的全场景需求,开发者应根据实际安全要求选择合适方案。