雪球App抓包与Mock实战(二)- 作业贴

作业

使用mitmproxy,贴出来效果图片

  • 对第一个股票保持原样
  • 对第二个股票名字加长一倍
  • 对第三个股票名字变成空

拓展作业

  1. 理解第三个案例,并添加自己的条件

陈智斌 【雪球App抓包与Mock实战(二)】作业提交

练习一
修改部分代码:
data[“data”][“items”][1][“quote”][“name”] = data[“data”][“items”][1][“quote”][“name”]*2
data[“data”][“items”][2][“quote”][“name”] = “”

image

拓展作业

数据处理部分修改代码:
elif isinstance(data, int) or isinstance(data, float):
‘’’
假如数据大于0,data就乘以传参num
假如数据小于0,data就乘以传参-num
‘’’
data_new= datanum if data>0 else data-num

修改具体值部分传参修改:
new_data = json_travel(data , num=1, text=1)

实现将一片绿的熊市变成一片红的牛市

修改前:
image
修改后:
image

张涛作业:
练习一:



练习二:

作业1
data["data"]["items"][1]["quote"]["name"] += data["data"]["items"][1]["quote"]["name"]
data["data"]["items"][2]["quote"]["name"] = ""
image

张志格_作业_1


mitmdump -p 8081 -s F:\PycharmProjects\Practice_Request\test_mitmproxy\test_map_local.py

作业一 对第一个股票保持原样 对第二个股票名字加长一倍 对第三个股票名字变成空

def response(flow: http.HTTPFlow):
    if "quote.json" in flow.request.url  and "x=" in flow.request.url:
        # 先接受返回信息
        data = json.loads(flow.response.content)
        pprint(data)
        # 中间做一些修改
        data["data"]["items"][1]["quote"]["name"] += data["data"]["items"][1]["quote"]["name"]
        data["data"]["items"][2]["quote"]["name"] =" "
        # 修改返回信息的字段
        pprint(data)
        flow.response.text=json.dumps(data)

image

作业二: 理解第三个案例,并添加自己的条件

添加条件一:将涨跌幅: 如果<-1% 变为正数;如果>1% 就乘以100

添加条件二:针对股票列表页批量操作:倍增

### 实现定制化的等价类
import json
from pprint import pprint
from mitmproxy import http

def response(flow: http.HTTPFlow):
    if "quote.json" in flow.request.url  and "x=" in flow.request.url:
        # 先接受返回信息
        data = json.loads(flow.response.content)
        # 对数据进行批量修改
        new_data=json_travel(data,num=1,text=1)
        # 打印 参数:indent=2,ensure_ascii=False 格式化输出
        data_mess = json.dumps(new_data,indent=2,ensure_ascii=False)
        print("=============修改后的信息============================")
        flow.response.text=data_mess

    #返回值常见类型:dict,array,txt,num
def json_travel(data,array=None,text=1,num=1):
    """
    {
       "data":
       {"name":{
       "nikename":"XXXX"
       }
       }
    }
    """
    if isinstance(data, dict):
        # 定义一个空字典
        data_new = dict()
        # 对字典类型进行操作
        for k, v in data.items():
            # 递归操作:第一次传入 data下面{name{...}}的值。一层一层往里传
            # 当遍历到最后一个nikename 的value不是deict 就会跳出循环,到下一个分支
            data_new[k] = json_travel(v, array, text, num)
            # 进对名字进行double显示操作
            if k=="name":
                data_new[k] = json_travel(v, array,text=2,num=1)
            # 将涨跌幅: 如果<-1% 变为正数;如果>1% 就乘以100
            if k=="percent":
                pprint(type(data_new[k]))
                pprint(data_new[k])
                if data_new[k]>-1:
                    data_new[k] = json_travel(v, array, text=1, num=-1)
                else:
                    data_new[k] = json_travel(v, array, text=1, num=100)
    elif isinstance(data, list):
        data_new = list()
        for item in data:
            item_new = json_travel(item, array, text, num)
            if array is None:
                # 最后需要传回一个新的列表 所以要append;否则将传回一个空列表
                # 针对股票列表页批量操作:倍增
                data_new.append(item_new)
                data_new.append(item_new)
            else:
                pass
    # 递归到最后 得到的都是一些简单的类型:string,int,boolean
    # 如果是字符串,则和传入的text相乘(或想加:一些修改操作),实现对字符串批量修改
    elif isinstance(data, str):
        data_new = data * text
    # 如果是int或float的数字类型,那么对数字做乘积
    elif isinstance(data, int) or isinstance(data, float):
        data_new = data * num
    # 其余类型传入什么返回什么
    else:
        data_new = data
    return data_new

1 个赞

郑向红 作业1:
image
作业2:
原页:
image
名字增长一倍;值大于0减10,小于0加10,为0的保持不变。
image

作业1 --卢海清

data["data"]["items"][1]["quote"]["name"] = data["data"]["items"][1]["quote"]["name"]*2
data["data"]["items"][2]["quote"]["name"] = ""

image

作业1:
代码:


图片:
作业1

作业一:

  • 对第一个股票保持原样
  • 对第二个股票名字加长一倍
  • 对第三个股票名字变成空
    image

作业二:理解第三个案例,并添加自己的条件
修改items下所有的字符串,加倍,
修改items下所有的数字,乘100,
排除market、status

王小刚作业1:
image

import json
from pprint import pprint

from mitmproxy import http

def response(flow: http.HTTPFlow):
# redirect to different host
if “quote.json” in flow.request.url and “x=” in flow.request.url:
## 先接收到返回信息
data = json.loads(flow.response.content)
with open(“E:\pythonclass\pythonprj\Mock\mock2.json”,“w+”) as f:
json.dump(data,f)
print("=============修改前的信息========start====================")
pprint(data)
print("=============修改前的信息========end======================")
## 中间做一些修改
data[“data”][“items”][0][“quote”][“name”] = data[“data”][“items”][0][“quote”][“name”]
data[“data”][“items”][1][“quote”][“name”] += data[“data”][“items”][1][“quote”][“name”]
data[“data”][“items”][2][“quote”][“name”] = “”
data[“data”][“items”][3][“quote”][“name”] = data[“data”][“items”][3][“quote”][“name”]+“HMS”
## 修改返回信息的字段
print(“修改后的信息start*****”)
pprint(data)
print(“修改后的信息end*******”)
flow.response.text = json.dumps(data)
作业二:
1、股票列表翻倍
2、负值变正值,正值翻10倍
3、股票名称翻倍
image

liuyu

作业:
data[“data”][“items”][1][“quote”][“name”] = data[“data”][“items”][1][“quote”][“name”]*2
data[“data”][“items”][2][“quote”][“name”] = “”

作业一:分别使用本地文件和重写方式,修改接口返回值
代码:


结果图:
test

作业二:将所有股票名称长度加倍,并把接口所有int值和float均乘以100,但不处理items_size
代码:
image
原图:
image
结果图:
test1

王熙曈作业

  • 对第一个股票保持原样
  • 对第二个股票名字加长一倍
  • 对第三个股票名字变成空

def response(flow: http.HTTPFlow):
if “quote.json” in flow.request.url:
# 获取请求返回的json
data = json.loads(flow.response.content)
# 修改name字段,拼接test
data[‘data’][‘items’][1][‘quote’][‘name’] = data[‘data’][‘items’][1][‘quote’][‘name’] * 2
data[‘data’][‘items’][2][‘quote’][‘name’] = " "
# 打印修改后的data
pprint(data)
# 替换response data
flow.response.text = json.dumps(data)

拓展作业

  1. 理解第三个案例,并添加自己的条件
    #若涨跌幅大于-2%,则变为正数;反之乘以10
    1606311561(1) 1606312328(1) 1606312340(1)

匡志荣作业
1.
import json
from pprint import pprint

from mitmproxy import http

def response(flow: http.HTTPFlow):
# redirect to different host
if “quote.json” in flow.request.url and “x=” in flow.request.url:

    data = json.loads(flow.response.content)
  
    pprint(data)
  
    data["data"]["items"][0]["quote"]["name"] = data["data"]["items"][0]["quote"]["name"]
    data["data"]["items"][1]["quote"]["name"] = data["data"]["items"][1]["quote"]["name"]*2
    data["data"]["items"][2]["quote"]["name"] = ""
  
    pprint(data)
    flow.response.text = json.dumps(data)

作业1