1.1 fiddler
图太多懒得搬。
http://note.youdao.com/noteshare?id=0002c321dcef04c267ade976fc6b2571&sub=EE496E19624842CF93817D953CF86A7A
加了代理就可以在运行时候抓包了,不然fiddler会和pycharm冲突。
proxies = {'http': "http://localHost:8888", 'https': 'http://localhost:8888'}
1.2 request库
pip install requests
post、get、put、delete,到时候就是统一调用这个方法。没啥好写的,就是一些参数的区别。
有的时候header不对会被拦截。
# coding = utf-8
import os
import sys
sys.path.append(os.path.realpath('..'))
import json
import requests
from Util.read_ini import read_ini
class BaseRequest:
def send_post(self, url, data, header=None, proxies=None, verify=None):
response = requests.post(url=url, json=data, headers=header, proxies=proxies, verify=verify)
return response.text
def send_get(self, url, data, header=None, proxies=None, verify=None):
response = requests.get(url=url, params=data, headers=header, proxies=proxies, verify=verify)
return response.text
def send_put(self, url, data, header=None, proxies=None, verify=None):
response = requests.put(url=url, json=data, headers=header, proxies=proxies, verify=verify)
return response.text
def send_detele(self, url, data, header=None, proxies=None, verify=None):
response = requests.delete(url=url, params=data, headers=header, proxies=proxies, verify=verify)
return response.text
def run_main(self, method, url, data, header=None, proxies=None, verify=None):
"""
执行方法
:param header:
:param get_cookie: 如果是yes,说明run_main要返回的是一个cookies对象
:param cookie:
:param method:
:param url:
:param data:
:return:
"""
# mock
# return get_value(url)
base_url = read_ini.get_value('host')
if 'http' not in url:
url = base_url + url
print("向这个地址", url, "发起请求")
if method == 'get':
res = self.send_get(url, data, header, proxies, verify)
if method == 'post':
res = self.send_post(url, data, header, proxies, verify)
if method == 'put':
res = self.send_put(url, data, header, proxies, verify)
if method == 'delete':
res = self.send_detele(url, data, header, proxies, verify)
try:
res = json.loads(res)
except Exception as e:
print("解析失败,这个结果是一个text。" + str(e))
return res
# 单例模式就是确保一个类只有一个实例.当你希望整个系统中,某个类只有一个实例时,单例模式就派上了用场.
request = BaseRequest()
if __name__ == "__main__":
pass
加密
import hashlib
#盐值
imooc = "imocc.com"
md5 = hashlib.md5()
md5.update(imooc.encode('utf-8'))
res = md5.hexdigest()
data = str({
'user': '1111'
})
#盐值+data
md5.update(data.encode('utf-8'))
res1 = md5.hexdigest()
print(res1)
1.3 json处理
在python中 json dict str,以及json中的load loads dump dumps的区别,他们之间的关系,到底是什么?
json是一种结构化的文本格式,和什么语言没有关系,可以说是,json类型、json字符串,python不能直接对它进行处理,要先使用json.loads转换成python类型。
然后在使用request发送请求的时候,又需要使用json.dumps把python对象转换成json字符串。
一般用loads和dumps,load和dump是和文件流有关的,此次没有用到。