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-8import osimport syssys.path.append(os.path.realpath('..'))import jsonimport requestsfrom Util.read_ini import read_iniclass 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.textdef 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.textdef 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.textdef 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.textdef 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 + urlprint("向这个地址", 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'})#盐值+datamd5.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是和文件流有关的,此次没有用到。
