xmlrpc.client.Fault: 403 用户名或密码不正确
背景描述:想着把原来Discuz平台网站转换到Wordpress博客平台,但是手动转移几千个帖子,工作量很大。于是,想着要开发一个Python自动化程序来完成Discuz转移Wordpress的工作。
使用Wordpress的XML-RPC功能进行文章自动化发布时,按标准设置了用户名和密码以及文章的格式,如下代码所示:
post = { 'blog_id': '1', 'username': wp_username, 'password': wp_pass, 'content': { 'title': get_content[0], 'description': get_content[3], 'mt_keywords': get_content[1], 'mt_excerpt': get_content[3].text[:45], 'mt_allow_comments': '1', 'mt_allow_pings': '1', 'wp_slug': '', 'categories': [get_content[2]], 'wp_password': '', 'publish': True, } } 但是代码执行时,抛出了错误xmlrpc.client.Fault: 403 用户名或密码不正确。这是怎么回事呢?
原因分析:小编在配置用户名和密码时,使用的是Wordpress后台登录用户和密码。查询了相关资料,通过第三方程序工具XML-RPC客户端发布文章,需要使用单独的应用程序密码。
如何开启和设置应用程序密码?
在Wordpress后台找了很多地方,包含设置_撰写等位置都没有找到应用程序密码,最终在用户管理,用户编辑的底部找到了该设置,但该位置没有设置框。提示内容:可能处于开发环境等不是https的环境中,尝试设置环境状态后设置框可显示。
按着这个提示,进行了config.php文件环境的配置,但是配置修改后仍然没有出现应用程序密码设置框。
最终解决方法:
进入插件菜单,搜索Application Passwords Enable这个插件安装并启用,然后再回到用户编辑界面,底部应用程序密码区域就出现设置框了。使用方法:填写一个用于区别的应用程序名称,然后点击“新增的应用程序密码”,系统将自动生成一串密码,需要自行记录保存该密码,页面刷新后密码将不再显示。
将获取的应用程序密码,更新到Python程序中,用户名还是之前的用户名,再尝试登录发布就可以了!