zoukankan      html  css  js  c++  java
  • python 网页cookie的使用

    网页cookie的使用

    Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)

    # opener的概念
    当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。

    如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置

    # Cookielib
    cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

    关系:CookieJar —- 派生—->FileCookieJar —- 派生 —–> MozillaCookieJar和LWPCookieJar

    1. 获取Cookie保存到变量
    利用CookieJar对象实现获取cookie的功能,存储到变量中
    # 例子

    import urllib2
    import cookielib
    
    cookie = cookielib.CookieJar()
    handler = urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(handler)
    response = opener.open("http://www.baidu.com")
    for item in cookie:
    print ("Name=" + item.name)
    print ("Value=" + item.value)

    2. 保存Cookie到txt文件
    将cookie保存到了cookie这个变量中,使用FileCookieJar的子类MozillaCookieJar来实现Cookie的保存

    import urllib2
    import cookielib
    
    filename = "cookie.txt" # 设置保存cookie的文件
    cookie = cookielib.MozillaCookieJar(filename) # 声明一个MozillaCookieJar对象实例来保存cookie
    handler = urllib2.HTTPCookieProcessor(cookie) # 利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
    opener = urllib2.build_opener(handler) # 通过handler来构建opener
    response = opener.open("http://www.baidu.com") # 创建一个请求,原理同urllib2的urlopen
    cookie.save(ignore_discard=True,ignore_expires=True) # 保存cookie到文件

    注:ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入


    3. 从文件中获取Cookie并访问

    import urllib2
    import cookielib
    
    cookie = cookielib.MozillaCookieJar()
    cookie.load("cookie.txt",ignore_discard=True,ignore_expires=True)
    request = urllib2.Request("http://www.baidu.com")
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    response = opener.open(request)
    print (response.read())
    

      


    4. 利用cookie模拟网站登录163邮箱
    利用cookie实现模拟登录,并将cookie信息保存到文本文件中。

    # eg_v1
    import urllib
    import urllib2
    import cookielib
    
    filename = "163mail.txt"
    cookie = cookielib.MozillaCookieJar(filename)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    postdata = urllib.urlencode({"email":"15800220134","password":"abc123456"})
    loginURL = "http://mail.163.com/"
    result = opener.open(loginURL,postdata)
    cookie.save(ignore_discard=True,ignore_expires=True)
    gradeURL = "http://mail.163.com/js6/main.jsp?sid=VDTWzvRRwIKUKIMaBmRRejDfKwRnmmNM&df=mail163_letter#module=welcome.WelcomeModule%7C%7B%7D"
    result1 = opener.open(gradeURL)
    print (result1.read())
    
     
    
    # eg_v2
    import urllib
    import urllib2
    
    def post(url,data):
    request = urllib2.Request(url)
    data = urllib.urlencode(data)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
    response = opener.open(request,data)
    return response.read()
    
    def main():
    posturl = "http://mail.163.com"
    data = {"email":"15800220134","password":"abc123456"}
    print (post(posturl,data))
    
    if __name__ == "__main__":
    main()
    

     

     

  • 相关阅读:
    Spring__SpringMVC__Mybatis整合
    Mybatis__延迟加载
    mybatis__关联关系__1对1,1对多
    动态SQL基本语句用法
    log4j的使用 && slf4j简单介绍
    Mybatis接口与映射文件
    ORM简介 && MyBatis和Hibernate的不同 && 动态代理简单实现Mybatis基本使用
    20169207《linux内核原理与分析》第二周作业
    关于Linux学习中的问题和体会
    [algothrim]URL相似度计算的思考
  • 原文地址:https://www.cnblogs.com/xieshengsen/p/6863577.html
Copyright © 2011-2022 走看看