python+Request提取cookie
目录
参数
登录接口参数
编辑
查询所有课程参数
使用json模块提取token
正则表达式re模块提取token
完整代码
参数
登录接口参数
查询所有课程参数
python处理cookie。
- 导入request包
-
# 导入request包 import requests
-
- 编写登录请求的查询参数
-
# 编写请求 # 登录参数 login_param = {"phone":"15321919666","password":"123456", } # URL地址 url_address_test = "http://www.edu2.com:8080/ssm_web/user/login"
-
- 接受响应数据
-
# result_data_info 接受响应数据 result_data_info = requests.post(url_address_test,data=login_param);
-
- 编写查询课程的url,并且接受
-
# 查询课程URL query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse" result_data_info = requests.post(query_all_course_address);
-
- 打印结果
-
# 判断是否是JSON数据 try:print(result_data_info.json())print("处理成功")except ValueError:print("返回结果不是JSON格式")print("响应内容是:")print(result_data_info.content)
-
- 运行程序
- 分析结果
- 在没有使用cookie的请求下
- 可以看到,服务器出现了错误
- 并且没有返回JSON数据
- 正常情况下这个接口会返回json数据
- 这个是POSTMAN返回结果
- Postnman可以自己管理cookie
- 这个是Jmeter中的返回结果
- Jmeter可以使用Http Cookie 管理器
- 或者自己提取
- 分析得出,发送请求的时候没有携带cookie和一些其他的参数
- 这个是POSTMAN返回结果
-
提取cookie
-
# 提取登录请求的cookie login_cookie_info = result_data_info.cookies print(" 登录接口中的cookie: ",login_cookie_info)
-
-
使用json模块提取token
-
# 导入json模块 import json
- json数据转化为字符串
-
# json数据转化为字符串 json_str_data = json.dumps(json_data); print("json数据转化为字符串",json_str_data)
-
-
提取token
-
login_token_info = json.loads(json_str_data)['content']['access_token']; print(login_token_info)
-
- 发送查询课程请求
-
# 查询课程URL query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse" result_data_info = requests.post(url=query_all_course_address,cookies=login_cookie_info,headers={"content-type":"application/json;","Authorization":login_token_info},json={});
-
-
-
正则表达式re模块提取token
- 这里使用re模块使用正则表达式去提取token
- 导入re模块
-
# 导入re模块 import re
-
-
正则表达式代码提取token
-
# 使用正则表达式提取token re_token = re.findall(pattern=r"'access_token': '(.*?)'",string=str(result_data_info.json()))print("re_token的结果:" ,re_token)
- 正则表示式格式
- r"XXXXXXXXXXXXXX-XXXXXXX"
- . 代表任意字符
- + 左侧尽可能多的匹配
- ? 尽可能少的匹配
-
- 运行结果
- 通过数据比对,可以看到已经成功提取
-
完整代码
# 导入request包import requests# 导入json模块 import json# 导入re模块 import re# 编写请求 # 登录参数 login_param = {"phone":"15321919666","password":"123456", } # URL地址 url_address_test = "http://www.edu2.com:8080/ssm_web/user/login"# result_data_info 接受响应数据 result_data_info = requests.post(url_address_test,data=login_param); # 打印响应结果 print(result_data_info.json())# 提取登录请求的cookie login_cookie_info = result_data_info.cookiesprint(" 登录接口中的cookie: ",login_cookie_info) json_data = result_data_info.json() # 提取token# json数据转化为字符串 json_str_data = json.dumps(json_data); print("json数据转化为字符串",json_str_data)login_token_info = json.loads(json_str_data)['content']['access_token']; print(login_token_info)print("json_token ",login_token_info)# 使用正则表达式提取token re_token = re.findall(pattern=r"'access_token': '(.*?)'",string=str(result_data_info.json()))print("re_token的结果:" ,re_token)# 查询课程URL query_all_course_address = "http://www.edu2.com:8080/ssm_web/course/findAllCourse" result_data_info = requests.post(url=query_all_course_address,cookies=login_cookie_info,headers={"content-type":"application/json;","Authorization":login_token_info},json={});# json={}# 判断是否是JSON数据 try:print(result_data_info.json())print("处理成功")except ValueError:print("返回结果不是JSON格式")print("响应内容是:")print(result_data_info.content)