【问题标题】:Python - Why don't mechanize sessions recognize each other?Python - 为什么机械化会话不能相互识别?
【发布时间】:2016-05-01 13:38:50
【问题描述】:

我正在运行一个 python 脚本以使用 mechanize 包登录到网页。我从一个脚本登录,在保持会话活跃的同时e(通过添加sleep),我从不同的脚本访问同一个网页.但是,它要求我输入用户名和密码——尽管第一个会话是有效的。

为什么不能识别已建立的会话?我该如何解决这个问题?

这是我用来建立会话的代码:

import mechanize
import cookielib
from time import sleep

loginURL = '<loginURL>'
URL = '<URL>'

browser = mechanize.Browser()

# Cookie Jar
cj = cookielib.LWPCookieJar()
browser.set_cookiejar(cj)

#Browser Options
browser.set_handle_robots(False)
browser.set_handle_equiv(True)
browser.set_handle_gzip(True)
browser.set_handle_redirect(True)
browser.set_handle_referer(True)

browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:43.0) Gecko/20100101 Debian 3.2.73-2+deb7u1 Firefox/43.0')]
browser.open(loginURL)
browser.select_form(nr = 0)
browser.form['username'] = '<username>'
browser.form['password'] = '<password>'
login = browser.submit()
#print login.read()

print 'keeping session...'
sleep(240)
#Checking that the session still alive
open = browser.open(URL)
print open.read()

然后我在这里运行第二个脚本

import mechanize
import cookielib    

URL = '<URL>'

browser = mechanize.Browser()

# Cookie Jar
cj = cookielib.LWPCookieJar()
browser.set_cookiejar(cj)

#Browser Options
browser.set_handle_robots(False)
browser.set_handle_equiv(True)
browser.set_handle_gzip(True)
browser.set_handle_redirect(True)
browser.set_handle_referer(True)
browser.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:43.0) Gecko/20100101 Debian 3.2.73-2+deb7u1 Firefox/43.0')]
#Checking the output
open = browser.open(URL)
print open.read()

【问题讨论】:

    标签: python session session-cookies mechanize


    【解决方案1】:

    大多数服务器通过会话 ID 识别登录用户作为 cookie 发送。第一个脚本从服务器获取该 cookie(当您登录时),但第二个脚本没有该 cookie。第一个脚本可以将 cookie 保存到文件,第二个脚本可以从文件中读取 cookie。

    编辑: 更准确地说:两个脚本都可以获取会话 ID,但不同。并且服务器将第一个脚本的会话 ID 识别为已登录。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多