使用Python和WordPress通过XMLRPC时遇到SSL握手失败问题
解决Python XMLRPC连接WordPress SSL握手失败问题
我之前也碰到过一模一样的问题!折腾了好几个小时才搞定,给你几个排查方向试试:
升级Python版本并指定TLS协议
旧版本Python(比如3.6及以下)的SSL库默认可能不支持WordPress服务器常用的TLS 1.2/1.3版本,这是最常见的原因。你可以先升级Python到3.7+,或者手动在代码里强制指定TLS版本:import ssl import xmlrpc.client # 强制使用TLS 1.2(如果服务器支持1.3也可以换成PROTOCOL_TLSv1_3) context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) client = xmlrpc.client.ServerProxy('https://你的WordPress站点地址/xmlrpc.php', context=context)排查SSL证书问题
如果服务器的SSL证书链不完整,或者是自签名证书(测试环境常见),会导致握手失败。你可以先临时禁用证书验证来排查(生产环境绝对不要这么做!):import ssl import xmlrpc.client context = ssl._create_unverified_context() client = xmlrpc.client.ServerProxy('https://你的WordPress站点地址/xmlrpc.php', context=context)如果这样能成功,说明是证书问题,生产环境需要安装完整的证书链,或者让服务器配置正确的证书。
检查WordPress的XMLRPC权限和安全插件
先确认WordPress后台「设置-撰写」里的「启用XML-RPC发布」是勾选状态。另外很多安全插件(比如Wordfence、iThemes Security)会默认拦截XMLRPC请求,你可以暂时关闭安全插件测试,或者在插件设置里把你的IP加入白名单。验证服务器SSL配置兼容性
用openssl s_client -connect 你的站点域名:443命令查看服务器支持的TLS版本和加密套件,确认你的Python客户端支持这些配置。如果服务器禁用了旧协议但客户端默认使用,就会出现握手失败。
按这个顺序一步步排查,大概率能解决问题!
内容的提问来源于stack exchange,提问作者mattblack
相关产品推荐
相关产品推荐

