Python 使用urllib2登录后提取新cookie

Python 使用urllib2登录后提取新cookie,python,cookies,urllib2,Python,Cookies,Urllib2,我遇到了一个我无法解决的问题。我能够成功地获取cookies,并在登录到web应用程序后使用它们。问题是web应用程序在我需要的几次单击之后设置了新的cookie 如何在登录后提取或获取其他cookie?以下是我目前的代码: def _login_to_page(self,url): cj = cookielib.CookieJar() cookiehandler = urllib2.HTTPCookieProcessor(cj) proxy_support = ur

我遇到了一个我无法解决的问题。我能够成功地获取cookies,并在登录到web应用程序后使用它们。问题是web应用程序在我需要的几次单击之后设置了新的cookie

如何在登录后提取或获取其他cookie?以下是我目前的代码:

  def _login_to_page(self,url):
    cj = cookielib.CookieJar()
    cookiehandler = urllib2.HTTPCookieProcessor(cj)
    proxy_support = urllib2.ProxyHandler({"https" : self._proxy})
    opener = urllib2.build_opener(cookiehandler, proxy_support)
    try:
      login_post_data = {'op':'login','user':self._username,'passwd':self._password,'api_type':'json'}
      response = opener.open(str(self._path_to_login_url), urllib.urlencode(login_post_data), self._request_timeout).read()
      if response: 
        print "[+] Login successful"
        self._login_cookies = cj 
      else:
        "[-] Login has probably failed. Wrong Credentials?"

 def get_url_loggedin(self,url):
    #the variable self._login_cookies are the cookies from the previous login
    cookiehandler = urllib2.HTTPCookieProcessor(self._login_cookies)
    proxy_support = urllib2.ProxyHandler({"http" : self._proxy})
    opener = urllib2.build_opener(cookiehandler, proxy_support)
    urllib2.install_opener(opener)
    try:
      url_response = opener.open(url, None, self._request_timeout).read()
    except Exception,e:
      print "[-] Could not read page: "
      print "[??] Error: " +repr(e)

抱歉,如果我的英语有点奇怪,我不是母语人士。

在应用程序设置了您想要的cookies后,您应该执行
cj.save('cookies.txt')
将当前设置的cookies保存到该文件中,并使用
cj.load('cookies.txt')
在应用程序启动时加载它们。
请参阅

在应用程序设置了所需的Cookie之后,您应该执行
cj.save('cookies.txt')
将当前设置的Cookie保存到该文件中,并使用
cj.load('cookies.txt')
在应用程序启动时加载它们。

你的英语很好,别担心!一个问题:您当前的代码有什么问题?还有一个观察:您可能不应该捕获所有异常。通常情况下,最好只捕获可能引发的事件,然后只有在您想处理它们时才捕获。嗯,我在您的代码中看不到cookies的提取,而不是使用以前提取的
self.\u login\u cookies
one。您如何提取这些数据,为什么不能在其他地方使用相同的方法?:)哇,这太快了,伙计们!:)这里是以前提取cookie的代码:只需编辑您的帖子并添加另一个代码片段,不要在注释中粘贴代码。我半教育性地猜测,在这种情况下,您的
CookieJar
在发送后将包含新cookie,如果您在处理其他请求时设置了相同的
\u login\u cookies
引用。您的英语非常好,所以不用担心!一个问题:您当前的代码有什么问题?还有一个观察:您可能不应该捕获所有异常。通常情况下,最好只捕获可能引发的事件,然后只有在您想处理它们时才捕获。嗯,我在您的代码中看不到cookies的提取,而不是使用以前提取的
self.\u login\u cookies
one。您如何提取这些数据,为什么不能在其他地方使用相同的方法?:)哇,这太快了,伙计们!:)这里是以前提取cookie的代码:只需编辑您的帖子并添加另一个代码片段,不要在注释中粘贴代码。我半教育性地猜测,在这种情况下,如果您在执行其他请求时设置了相同的
\u login\u cookies
,则您的
CookieJar
在发送后将包含新cookie。