python通过生成cookie文件,并

  • 2020 年 1 月 10 日
  • 筆記

今天有个需求需要通过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()