2

我遇到了一个我无法解决的问题。我能够成功获取 cookie 并在登录到 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)

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

4

1 回答 1

0

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

于 2012-08-13T17:57:21.120 回答