python通过生成cookie文件,并

发布时间:2019-08-28 09:11:06编辑:auto阅读(1487)

    今天有个需求需要通过cookie访问内部cmdb,获取机器等信息。上网搜罗了一下用法。记录一下



    带密码直接访问的

    # -*- coding: utf-8 -*-
    # !/usr/bin/python
    import urllib2
    import urllib
    import cookielib
    import re
    auth_url = 'http://a.test.com/user/login'
    home_url = 'http://a.test.com/cmdb/hosts/';
    # 登陆用户名和密码
    data={
      "username":"aaa",
      "password":"bbb"
    }
    # urllib进行编码
    post_data=urllib.urlencode(data)
    # 发送头信息
    headers ={
     "Host":"a.test.com",
    "Referer": "http://a.test.com"
    }
    # 初始化一个CookieJar来处理Cookie
    cookieJar=cookielib.CookieJar()
    # 实例化一个全局opener
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
    # 获取cookie
    req=urllib2.Request(auth_url,post_data,headers)
    result = opener.open(req)
    # 访问主页 自动带着cookie信息
    iresult = opener.open(home_url)
    # 显示结果
    print iresult.read()



    由于没有特定的账号来读取,只能使用自己的个人账号。所以不想一直把密码写在文件里。就准备生产一个cookie文件,后面全用这个cookie文件进行访问


    先生产cookie文件

    # -*- coding: utf-8 -*-
    # !/usr/bin/python
    import urllib2
    import urllib
    import cookielib
    import re
    auth_url = 'http://a.test.com/user/login'
    # 登陆用户名和密码
    data={
      "username":"aaa",
      "password":"bbb"
    }
    # urllib进行编码
    post_data=urllib.urlencode(data)
    # 发送头信息
    headers ={
      "Host":"a.test.com",
    "Referer": "http://a.test.com"
    }
    # 初始化一个CookieJar来处理Cookie
    cookieJar=cookielib.CookieJar()
    # 实例化一个全局opener
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
    req = urllib2.Request(auth_url, post_data, headers)
    req.add_header('User-Agent', \
      'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
    filename = 'cookie.txt'
    ckjar = cookielib.MozillaCookieJar(filename)
    ckproc = urllib2.HTTPCookieProcessor(ckjar)
    opener = urllib2.build_opener(ckproc)
    f = opener.open(req)
    htm = f.read()
    f.close()
    ckjar.save(ignore_discard=True, ignore_expires=True)



    第二步,通过这个cookie文件访问,第一步生产完cookie文件后,脚本就可以清理掉了

    get方法

    # -*- coding: utf-8 -*-
    # !/usr/bin/python
    import cookielib
    import urllib2
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    cookie=cookielib.MozillaCookieJar()
    cookie.load('cookie.txt',ignore_expires=True,ignore_discard=True)
    req=urllib2.Request('http://a.test.com/cmdb/hosts/ ')
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    urllib2.install_opener(opener)
    response=urllib2.urlopen(req)
    print response.read()

    post方法

    # -*- coding: utf-8 -*-                        
    # !/usr/bin/python                             
    import cookielib                               
    import urllib2                                 
    import urllib                                  
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')                
    cookie=cookielib.MozillaCookieJar()
    cookie.load('cookie.txt',ignore_expires=True,ignore_discard=True)
    req=urllib2.Request('http://a.test.com/cmdb/hosts/')
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    urllib2.install_opener(opener)                 
    formdata={"user":"test"}   #post数据
    data_encoded = urllib.urlencode(formdata)      
    response=urllib2.urlopen(req,data_encoded)
    print response.read()


关键字