python - mechanize: cookies 混淆了?

标签 python cookies automation mechanize session-cookies

我正在使用 mechanize 从不同的代理访问同一网站。该网站有一个登录页面。我有 5 个代理和 5 个不同的登录名,每个代理使用一个登录名。

如果我只使用一个代理和一个登录运行我的脚本,则每个脚本都可以正常工作。但是,如果我同时运行两个或多个代理/登录,那么我就会开始收到错误(来自网站),例如“您的 session 已超时或未启用 cookie”。无论我是从同一脚本(同一进程)还是从不同脚本(不同进程)运行 5 个实例,都会发生这种情况。

什么会导致它单独工作但不能同时工作?

最佳答案

这是因为 mechanize 默认情况下会自动创建一个共享的“cookie jar”。对于更高级的 cookie 处理选项,您必须为每个脚本 session 创建自己的 cookie jar。

我必须在过去的项目中使用自定义 cookie jar,以便将 cookie 从一个 session 移动到另一个 session 。最终结果是相同的,脚本的每个实例都有自己唯一的文件来存储其 cookie,因此您需要管理 cookie 文件并确保它们不会混淆。

>>>> import mechanize

>>>> cj1 = mechanize.CookieJar()
>>>> cj2 = mechanize.CookieJar()
>>>> mech1 = mechanize.OpenerFactory().build_opener(mechanize.HTTPCookieProcessor(cj1))
>>>> mech2 = mechanize.OpenerFactory().build_opener(mechanize.HTTPCookieProcessor(cj2))

>>>> request = mechanize.Request('http://example.com') # testing shows they can share a request

>>>> response1 = mech1.open(request)
>>>> response2 = mech2.open(request)

>>>> print cj1
<mechanize._clientcookie.CookieJar[<Cookie JSESSIONID=54FBB2BE99E4CFDA8F8386F52FCF59C3>]>
>>>> print cj2
<mechanize._clientcookie.CookieJar[<Cookie JSESSIONID=350C0D544CDAD344A1272DA8D7B016B0>]>

在我测试的这个示例中,您可以看到两个 mechanize 对象,每个对象都有自己独立的 cookie jar。

关于python - mechanize: cookies 混淆了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268405/

相关文章:

python - Pandas 对给定开始和结束日期的时间序列进行重采样

css - 使用 iframe Calend 隐藏 cookie 横幅

triggers - 邮件黑猩猩 : Automation Workflow does not trigger

powershell - 在启动或停止 Azure VM 之前是否需要检查实例状态?

file-io - 打开文件时在 Komodo Edit 中自动切换自动换行

Python ABC 多重继承

Python - 使用 OpenCV 将图像保存在文件中后,窗口中的图像外观有所不同

python - 使用 pyparsing 在 python 中解析文本文件

session - 复合/环 : Why doesn't a session with cookie-store survive a server restart?

javascript - 如何使用 cookie 将自己排除在新的 (2014) Google Analytics 流量之外?