gpt4 book ai didi

python - Mechanize 和 Python 没有正确处理 cookie

转载 作者:行者123 更新时间:2023-12-04 16:20:51 26 4
gpt4 key购买 nike

我有一个使用 Mechanize 浏览器的 Python 脚本,它登录到自托管的 Wordpress 博客,在自动重定向到仪表板以自动化几个内置功能后导航到不同的页面。

这个脚本实际上 100% 在我的大多数博客上工作,但与其中一个进入永久循环。

不同的是,唯一一个失败的有一个名为 Wassup 的插件正在运行。这个插件为所有访问者设置了一个 session 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 session cookie 在 Wassup 之前返回。

还有其他建议吗?

最佳答案

结果证明这是一个完全不同的问题,并且修复了,这就是为什么我决定将答案放在这里,供以后阅读此内容的任何人使用。

设置 WordPress 站点时,可以将 url 选项默认为 http://sample.comhttp://www.sample.com .结果证明这是 cookie 存储的问题。 Cookie 与 url 一起作为其名称的一部分存储。我的程序使用这些格式中的一种或另一种对 url 进行半硬编码。这意味着每次我发出新的 url 请求时,它的格式都错误,并且找不到名称正确的 cookie,因此 WordPress 站点正确地决定我没有登录,并让我重新登录。

修复方法是获取登录后重定向中提供的 url 并重新编码变量(在本例中为 self.burl)以反射(reflect) .httaccess 文件期望看到的内容。

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

我希望这可以帮助某人使用请求、斜纹、机械等。

关于python - Mechanize 和 Python 没有正确处理 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11915560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com