wpmu のインストールで、自分自身の管理タスクを自動化したいと考えています。たとえば、ログインして新しいブログを追加するための php curl スクリプトを作成しようとしています。だから私はすでにcurl経由でログインしており、wpmu-blogs.phpにあるフォームを投稿したいのですが、wp nonceフィールドが隠されています。この値を変数に入れるにはどうすればよいですか? ソースを確認しましたが、複数の wp nonce 隠しフィールドがあります。さまざまなフォームのさまざまなタスクに対してさまざまな nonce 値があると想定しています。新しいブログを追加するために必要なものを入手するにはどうすればよいですか?
2 に答える
nonce のポイントは、クロス サイト フォージェリ攻撃から保護することです。このため、定期的に新しいナンス値が生成されます。ノンスが予測可能であれば、効果的ではありません。
curl を使用して nonce 対応フォームに投稿するには、次のようにする必要があります。
すべての Cookie 処理オプションを有効にします (Cookie を Cookie jar に保存するオプションと、保存した Cookie jar に Cookie を送信するオプションの両方)
フォームを含むページにリクエストを送信します
正規表現または HTML/XHTML 解析ライブラリを使用して、必要な nonce 値を引き出します
その値を手に入れて、目的のページに投稿し、ノンスを送信します
この種のプログラミングは退屈な場合があります。基本的に、Web ブラウザーをエミュレートしようとしています。可能ですが、検討してみてはいかがでしょうか
Wordpress XML-RPC API を調べる。これは、CURL を使用して自動化しようとしている種類のことを実行するためにサポートされている方法であり、学習曲線を登ると、はるかに簡単になります。
AtomPub APIもあります。AtomPub は、一部には、ウェブログや個人の発行サイトに共通のアクションを実行する標準的な方法を考え出す試みです。利点は、理論上、あるシステム (Wordpress) 用に作成されたスクリプトが別のシステム (MovableType) でも機能することです。欠点は、AtomPub の機能が各エンジンのカスタム API でサポートされている機能よりも遅れたり、異なったりする傾向があることです。
最後に、どちらの API も学習する気がない場合は、Seleniumを試してみてください。Selenium IDE を使用すると、Firefox のスクリプトを作成し、ノンスを自動的に処理できます。これは、実際にはブラウザーを使用して各ページにアクセスしているためです。
また、 greasemonkeyを使用して Firefox のスクリプトを作成することもできます。
このアドオンは、Web ページをカスタマイズし、javascript を使用して何らかのアクションを実行することを許可します。