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
    

      

  • 相关阅读:
    Silverlight 5 开发者的声音
    Android之Bundle传递数据详解与实例及Bundle与SharedPreferences的区别
    Android开源项目源码下载(不断更新中)
    Android 控件之WebView
    Android学习资料分享(不断更新中)
    Android控件之ZoomButton缩放按钮
    Android2.3操作系统即将发布,亮点解读
    Android控件之ZoomControls缩放控件
    Windows Phone 7 Silverlight控件之Map入门
    Android 控件之DatePicker,TimePicker,Calender
  • 原文地址:https://www.cnblogs.com/apple2016/p/14216600.html
Copyright © 2011-2022 走看看