PythonからWordPressへ自動投稿をしていた際、投稿の間隔が短すぎたせいか、以下のエラーが発生してしまいました。
1 2 3 4 5 6 7 8 9 10 11 12 |
Traceback (most recent call last): File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\site-packages\wordpress_xmlrpc\base.py", line 24, in __init__ self.supported_methods = self.server.mt.supportedMethods() File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\xmlrpc\client.py", line 1116, in __call__ return self.__send(self.__name, args) File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\xmlrpc\client.py", line 1456, in __request response = self.__transport.request( File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\xmlrpc\client.py", line 1160, in request return self.single_request(host, handler, request_body, verbose) File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\xmlrpc\client.py", line 1190, in single_request raise ProtocolError( xmlrpc.client.ProtocolError: <ProtocolError for your-blog-domain.com/xmlrpc.php: 403 Forbidden> |
1 2 3 4 5 6 7 8 |
During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\your-user-name\project\python\xxxxx\xxxxx.py", line 32, in <module> _wp_client = Client(URL, ID, PASSWORD) File "C:\Users\your-user-name\AppData\Local\Programs\Python\Python39\lib\site-packages\wordpress_xmlrpc\base.py", line 27, in __init__ raise ServerConnectionError(repr(e)) wordpress_xmlrpc.exceptions.ServerConnectionError: <ProtocolError for your-blog-domain.com/xmlrpc.php: 403 Forbidden> |
使っているサーバーはエックスサーバーです。
具体的には以下のClientを生成する部分でエラーが発生していました。
1 2 3 4 5 6 7 |
from wordpress_xmlrpc import Client URL= 'xxx' LOGIN_ID = 'xxx' PASSWORD = 'xxx' _wp_client = Client(URL, LOGIN_ID, PASSWORD) |
.htaccessの設定を変えてみてもいっこうにエラーが解決せず、どうしたものかと困っていましたが、Xserverの管理画面から設定を変更することで解決しました。
目次
「wordpress_xmlrpc.exceptions.ServerConnectionError 403 Forbidden」の解決方法
サーバーパネルへログイン
エックスサーバーのサーバーパネルへログインします。
WordPressセキュリティ設定を選択
サブメニューから「WordPressセキュリティ設定」を選択します。
対象のドメインを選択
自動投稿をしたいドメインを選択します。
「ログイン試行回数制限設定」をOFFにする
ログイン試行回数制限設定がONになっている場合は、一時的にOFFにしてください。
OFFにした状態で再度pythonからプログラムを起動すると、無事エラーが発生することなく、自動投稿ができるようになります。
ログイン試行回数制限設定にひっかかったのはなぜ?
エックスサーバーの公式ヘルプを見てみると、ログイン試行回数制限設定は「短時間に連続してログイン処理(失敗)が行われた場合にアクセスを制限する機能」と書かれています。
短時間に連続してログインしたのはたしかですが、「(ログインに)失敗はしていないはずなんだけどな…」と、なぜこの機能にひっかかったのか、正直謎です。
Xserverはセキュリティがしっかりしている、ということでとりあえず良しとしましょう…。
自動投稿が終わったあとは、元に戻す(ONにしておく)ことを忘れないようにしてください。
Pythonでより自動化の質をあげたい人はudemyがおすすめです。
動画でわかりやすくレクチャーしてくれるので、効率化を追求したい人にはきっと役に立つと思います。