セルフホストのWordpressブログにログインし、ダッシュボードへの自動リダイレクト後に別のページに移動していくつかの組み込み関数を自動化する、機械化ブラウザーを使用するPythonスクリプトがあります。
このスクリプトは、実際にはほとんどのブログで100%機能しますが、そのうちの1つで永続的なループに入ります。
違いは、失敗するのはWassupというプラグインだけが実行されていることです。このプラグインはすべての訪問者にセッションCookieを設定し、これが問題の原因であると私は考えています。
スクリプトが新しいページに移動すると、Wordpressコードは適切なCookieセットを取得せず、ブラウザがログインしていないと判断し、ログインページにリダイレクトします。スクリプトは再度ログインし、同じ機能を試行して、もう一度やり直します。
ログインが正しく、Cookieを正しく処理するTwillを使用してみましたが、デフォルトでは、Twillはすべてをコマンドラインに出力します。この時点でページ操作を行っており、生のhtmlにアクセスする必要があるため、これは私が望む動作ではありません。
これはセットアップコードです
# Browser
self.br = mechanize.Browser()
# Cookie Jar
policy = mechanize.DefaultCookiePolicy(rfc2965=True)
cj = mechanize.LWPCookieJar(policy=policy)
self.br.set_cookiejar(cj)
ログインに成功したら、この関数を呼び出します
def open(self):
if 'http://' in str(self.burl):
site = str(self.burl) + '/wp-admin/plugin-install.php'
self.burl = self.burl[7:]
else:
site = "http://" + str(self.burl) + '/wp-admin/plugin-install.php'
try:
r = self.br.open(site, timeout=1000)
html = r.read()
return html
except HTTPError, e:
return str(e.code)
Cookieをファイルに保存してから、注文をシャッフルして、WordpressセッションのCookieがWassupのCookieの前に返されるようにする必要があると考えています。
他に何か提案はありますか?