我有一个Python脚本,使用mechanizebrowser登录到一个自托管的Wordpress博客,在自动重定向到仪表板后导航到另一个页面,以自动执行几个内置函数。在
这个脚本实际上在我的大多数博客上都能100%地工作,但却与其中一个永久循环。在
不同的是,唯一失败的插件运行着一个名为Wassup的插件。这个插件为所有访问者设置了一个会话cookie,这就是我认为导致这个问题的原因。在
当脚本转到新页面时,Wordpress代码没有获得正确的cookie集,决定浏览器没有登录并重定向到登录页面。脚本再次登录并尝试相同的函数,然后我们再次执行。在
我尝试使用Twill,它可以正确登录并正确处理cookies,但默认情况下,Twill会将所有内容输出到命令行。这不是我想要的行为,因为我正在进行页面操作,我需要访问原始的html。在
这是设置代码
# Browser
self.br = mechanize.Browser()
# Cookie Jar
policy = mechanize.DefaultCookiePolicy(rfc2965=True)
cj = mechanize.LWPCookieJar(policy=policy)
self.br.set_cookiejar(cj)
成功登录后,我调用这个函数
^{pr2}$我想我需要将cookies保存到一个文件中,然后重新排列顺序,以便Wordpress会话cookie在Wassup之前返回。在
还有其他建议吗?在
结果发现这是一个完全不同的问题,并解决了,这就是为什么我决定把答案放在这里给任何人谁读了这篇文章。在
当一个WordPress站点被设置时,url有一个默认值为http://sample.com或{a2}的选项。这对cookie存储来说是个问题。Cookies与url一起存储,作为其名称的一部分。我的程序用这些格式中的一种对url进行半硬编码。这意味着每次我提出一个新的url请求时,它的格式都是错误的,并且找不到具有正确名称的cookie,因此WordPress站点正确地决定我没有登录,并让我重新登录。在
修复方法是在登录后获取重定向中传递的url并重新编码变量(在本例中自我.burl)以反映.httaccess文件期望看到的内容。在
这解决了我的问题,因为我的一些网站有一种格式,另一些是另一种格式。在
我希望这有助于某人使用请求,斜纹,机械化等
相关问题 更多 >
编程相关推荐