我有一个使用 mechanize 浏览器的 Python 脚本,它登录到一个自托管的 Wordpress 博客,在自动重定向到仪表板后导航到不同的页面以自动化几个内置功能。
这个脚本实际上在我的大多数博客上都 100% 有效,但其中一个进入了永久循环。
不同之处在于,唯一失败的是一个名为 Wassup 的插件正在运行。这个插件为所有访问者设置了一个会话 cookie,我认为这就是导致问题的原因。
当脚本进入新页面时,Wordpress 代码没有设置正确的 cookie,确定浏览器没有登录并重定向到登录页面。脚本再次登录并尝试相同的功能,然后我们再次进行。
我尝试使用 Twill 正确登录并正确处理 cookie,但默认情况下,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 之前返回。
还有其他建议吗?