python - 使用 urllib2 登录后提取新的 cookie

标签 python cookies urllib2

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

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

最佳答案

在应用程序设置了你想要的 cookie 之后,你应该执行 cj.save( 'cookies.txt' ) 将当前设置的 cookie 保存到该文件,并使用 cj. load('cookies.txt') 在应用程序启动时加载它们。 查看cookielib documentation

关于python - 使用 urllib2 登录后提取新的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11819197/

相关文章:

python - 在Python 3.X中一次从url一行读取csv

Python:我可以做些什么来精简我的 Python 代码?

python - Windows 客户端无法与在 linux docker 容器中运行的服务器通信

ruby-on-rails - 在 Rails cookie 中存储/检索值

asp.net - ASP.Net MVC Cookies不持久

cookies - 使用 NodeJS 和 ExpressJS 为域而不是子域设置 cookie

python - 带宽测试,延迟测试使用urllib2

python - 加快从网络下载文件的处理速度

python - 计算多个文件的平均值

python - 缩略图现在显示在 django 管理 ListView 中