1.1 fiddler

图太多懒得搬。
http://note.youdao.com/noteshare?id=0002c321dcef04c267ade976fc6b2571&sub=EE496E19624842CF93817D953CF86A7A
加了代理就可以在运行时候抓包了,不然fiddler会和pycharm冲突。

  1. proxies = {'http': "http://localHost:8888", 'https': 'http://localhost:8888'}

1.2 request库

  1. pip install requests

post、get、put、delete,到时候就是统一调用这个方法。没啥好写的,就是一些参数的区别。
有的时候header不对会被拦截。

  1. # coding = utf-8
  2. import os
  3. import sys
  4. sys.path.append(os.path.realpath('..'))
  5. import json
  6. import requests
  7. from Util.read_ini import read_ini
  8. class BaseRequest:
  9. def send_post(self, url, data, header=None, proxies=None, verify=None):
  10. response = requests.post(url=url, json=data, headers=header, proxies=proxies, verify=verify)
  11. return response.text
  12. def send_get(self, url, data, header=None, proxies=None, verify=None):
  13. response = requests.get(url=url, params=data, headers=header, proxies=proxies, verify=verify)
  14. return response.text
  15. def send_put(self, url, data, header=None, proxies=None, verify=None):
  16. response = requests.put(url=url, json=data, headers=header, proxies=proxies, verify=verify)
  17. return response.text
  18. def send_detele(self, url, data, header=None, proxies=None, verify=None):
  19. response = requests.delete(url=url, params=data, headers=header, proxies=proxies, verify=verify)
  20. return response.text
  21. def run_main(self, method, url, data, header=None, proxies=None, verify=None):
  22. """
  23. 执行方法
  24. :param header:
  25. :param get_cookie: 如果是yes,说明run_main要返回的是一个cookies对象
  26. :param cookie:
  27. :param method:
  28. :param url:
  29. :param data:
  30. :return:
  31. """
  32. # mock
  33. # return get_value(url)
  34. base_url = read_ini.get_value('host')
  35. if 'http' not in url:
  36. url = base_url + url
  37. print("向这个地址", url, "发起请求")
  38. if method == 'get':
  39. res = self.send_get(url, data, header, proxies, verify)
  40. if method == 'post':
  41. res = self.send_post(url, data, header, proxies, verify)
  42. if method == 'put':
  43. res = self.send_put(url, data, header, proxies, verify)
  44. if method == 'delete':
  45. res = self.send_detele(url, data, header, proxies, verify)
  46. try:
  47. res = json.loads(res)
  48. except Exception as e:
  49. print("解析失败,这个结果是一个text。" + str(e))
  50. return res
  51. # 单例模式就是确保一个类只有一个实例.当你希望整个系统中,某个类只有一个实例时,单例模式就派上了用场.
  52. request = BaseRequest()
  53. if __name__ == "__main__":
  54. pass

加密

  1. import hashlib
  2. #盐值
  3. imooc = "imocc.com"
  4. md5 = hashlib.md5()
  5. md5.update(imooc.encode('utf-8'))
  6. res = md5.hexdigest()
  7. data = str({
  8. 'user': '1111'
  9. })
  10. #盐值+data
  11. md5.update(data.encode('utf-8'))
  12. res1 = md5.hexdigest()
  13. print(res1)

1.3 json处理

在python中 json dict str,以及json中的load loads dump dumps的区别,他们之间的关系,到底是什么?
json是一种结构化的文本格式,和什么语言没有关系,可以说是,json类型、json字符串,python不能直接对它进行处理,要先使用json.loads转换成python类型。
image.png
然后在使用request发送请求的时候,又需要使用json.dumps把python对象转换成json字符串。
一般用loads和dumps,load和dump是和文件流有关的,此次没有用到。