Mechanize和Python不能正确处理cookies

2024-10-16 20:48:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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之前返回。在

还有其他建议吗?在


Tags: 函数代码selfbrowser脚本插件cookiepolicy
1条回答
网友
1楼 · 发布于 2024-10-16 20:48:39

结果发现这是一个完全不同的问题,并解决了,这就是为什么我决定把答案放在这里给任何人谁读了这篇文章。在

当一个WordPress站点被设置时,url有一个默认值为http://sample.com或{a2}的选项。这对cookie存储来说是个问题。Cookies与url一起存储,作为其名称的一部分。我的程序用这些格式中的一种对url进行半硬编码。这意味着每次我提出一个新的url请求时,它的格式都是错误的,并且找不到具有正确名称的cookie,因此WordPress站点正确地决定我没有登录,并让我重新登录。在

修复方法是在登录后获取重定向中传递的url并重新编码变量(在本例中自我.burl)以反映.httaccess文件期望看到的内容。在

这解决了我的问题,因为我的一些网站有一种格式,另一些是另一种格式。在

我希望这有助于某人使用请求,斜纹,机械化等

相关问题 更多 >