zoukankan      html  css  js  c++  java
  • python 获取cookie,发送请求

    获取cookie思路:

    1、确认登录login接口,及登录所需参数(包括用户名、密码、uuid等参数);

    2、确认uuid等参数的获取接口(一般是get请求);

    3、凭借uuid等参数向login接口发起请求,获取响应报文中的cookie(不同的网站平台可能表示方法不一样,需区别对待);

    示例代码:

    # -*- coding:UTF-8 -*-
    import json,chardet,requests
    import os
    import httplib
    httplib.HTTPConnection._http_vsn = 10
    httplib.HTTPConnection._http_vsn_str = 'HTTP/1.0'
    
    #获取uuid
    uuid_url="http://ip:7924/alpha/captchaImage"
    uuidresponse=requests.get(uuid_url)#返回response对象
    uuidresponse_json=uuidresponse.text #获取响应json报文
    uuidresponse_dict=json.loads(uuidresponse_json,encoding="utf-8") #json响应报文转换为字典类型,方便后续数据处理
    uuid=uuidresponse_dict['uuid']#从响应中获取uuid
    print uuid
    
    #登录并获取cookie
    login_url="http://ip:7924/alpha/login?username=XXXX@hq.cmcc&password=admin123&code=1111&uuid="+uuid
    login_head={"Content-Type": "application/json; charset=UTF-8", "Connection": "keep-alive"}
    login_body={"username":"XXXX@hq.cmcc","password":"admin123","code":"1111","uuid":uuid}
    
    print login_url
    print login_body
    
    try:
        res = requests.post(url=login_url, headers=login_head, data=login_body)
        loginresponse_json=res.text
        loginresponse_dict=json.loads(loginresponse_json,encoding="utf-8")
        token = loginresponse_dict['token']
        print 'get token=', token
        cookie ='Bearer '+token
        print 'get cookie=',cookie
        
    except Exception as err:
        print '获取cookie失败!',err
        
    #保存cookie到文件中
    tokenpath=os.path.abspath(os.path.dirname(os.path.dirname(__file__)))+'\'
    #tokenpath=os.path.abspath(os.path.dirname(os.getcwd()))+'\'
    cookiefiledata='NewCookie
    '+cookie+'
    '
    with open(tokenpath+"tianbaoNewCookie.txt",'wb') as f:
        f.write(cookiefiledata)
        
    #使用cookie  
    filepath = os.path.abspath(os.path.dirname(__file__))+'\'
    print 'filepath=',filepath
    
    request_url="http://ip:7924/alpha/light/todo/query/todoTaskList"
    request_dictdata={'officeType':'1001','busiType':None,'status':None,'startTime':'','endTime':'','pageNum':1,'pageSize':500,'find':'压测表单业务','officeTypes':['1001'],'busiTypes':[]}
    
    print type(request_dictdata)
    
    requestJSONdata=json.dumps(request_dictdata)
    
    head = {"Content-Type": "application/json; charset=UTF-8", "Connection": "close","Authorization": cookie}
    
    print '>>>>>>requestJSONdata:
    ',requestJSONdata
    
    try:
        r = requests.post(request_url,data=requestJSONdata,headers=head)
    except Exception as e:
        print '【error: 】',e
        raise Exception(e)
    
    
    responsedata=r.text
    print "get the status: ",r.status_code
            
    
    load_dict=json.loads(responsedata,encoding="utf-8")
    print '<<<<<<<responsedata:
    ',load_dict
    

      

  • 相关阅读:
    Android通知栏介绍与适配总结
    Java emoji持久化mysql
    css自适应
    常用网址总结
    前端开发常用技巧
    JAVA问题集锦Ⅰ
    Android之常见问题集锦Ⅱ
    Java集合之ConcurrentHashMap.addCount解析
    Java集合之ConcurrentHashMap解析
    Java数据结构之Map
  • 原文地址:https://www.cnblogs.com/apple2016/p/14216600.html
Copyright © 2011-2022 走看看