• mimtproxy的使用(windows)


      1.安装

    pip3 install mitmproxy

      或者下载安装指定版本:https://mitmproxy.org/downloads/

      2.配置证书

        对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过  mitmproxy获取HTTPS请求的具体内容,否则mitmproxy是无法解析HTTPS请求的。

      首先,运行以下命令产生CA证书,并启动mitmdump:

    mitmdump

      然后就可以搜索.mitmproxy文件夹

      

      点击mitmproxy-ca.p12进行安装,安装到受信任的根目录。。那个文件夹。

      但是我这边的没有那个引导选项,我就这么做

      

    打开ie浏览器
    选择intnet选项
    点击内容选项卡
    点击证书
    点击受信任的根证书颁发者
    点击导入
    选择我们要导入的证书

      

       至于手机端就是和电脑在同一局域网,并设置电脑ip+8080为代理

    然后访问

    mitm.it

      下载证书,安装证书

    3.使用

      脚本简单使用

    import json
    def response(flow):
    # 这个别问为啥了,必须这么写
        url = 'www.xxx.com'
        if url in flow.request.url:
            text = json.loads(flow.response.content)
            print(text)

      把脚本保存为py文件(xx.py)

      用mitmdump加载这个py文件

    mitmdump -s xx.py 

    4.实例(当当)

      当手机端和mitmproxy都下载配置好了

      编写这么一个脚本(xxxx.py)

    import json
    
    def response(flow):
        url = 'product.mapi.dangdang.com'
        page_size = 'page_size=15'
        # 对url进行筛选,只选取评论的url
        if url and page_size in flow.request.url:
            text = flow.response.text
            data = json.loads(text)
            for item in data['review_list']:
                # 获取用户昵称
                if len(item['cust_name']) > 0:
                    name = item['cust_name']
                else:
                    name = '无名'
                print(item['cust_name'])
                # 获取用户评分
                if len(item['score']) > 0:
                    score = str(item['score'])
                else:
                    score = '0'
                print(item['score'] + '
    ')
                # 获取用户评论
                content = item['content'].replace(',', '').replace('
    ', '')
                print(item['content'] + '
    ')
                # 获取用户评论时间
                creation_date = item['creation_date']
                print(item['creation_date'])
                # 获取有用数
                if len(str(item['total_helpful_num'])) > 0 :
                    total_helpful_num = str(item['total_helpful_num'])
                else:
                    total_helpful_num = '0'
                print(item['total_helpful_num'])
                # 获取无用数
                if len(str(item['total_useless_num'])) > 0 :
                    total_useless_num = str(item['total_useless_num'])
                else:
                    total_useless_num = '0'
                print(item['total_useless_num'])
                # 获取评论数
                if len(str(item['total_reply_num'])) > 0 :
                    total_reply_num = str(item['total_reply_num'])
                else:
                    total_reply_num = '0'
                print(item['total_reply_num'])
                print('
    ')
                # 将获取信息写入csv文件
                with open('alive.csv', 'a+', encoding='utf-8-sig') as f:
                    f.write(name + ',' + score + ',' + content + ',' + creation_date + ',' + total_helpful_num + ',' + total_useless_num + ',' + total_reply_num + '
    ')

      利用mitmdump启动这个脚本文件

    mitmdump  -s xxxx.py

      当手机往下滑的时候,就会出现如下的效果

      

      脚本文件所在的位置生成这么一个文件

      

      接下来就是连接手机(模拟器)和airtest,然后自动化操作滑动的动作了

      airtest脚本

    # -*- encoding=utf8 -*-
    __author__ = "Administrator"
    
    from airtest.core.api import *
    auto_setup(__file__)
    
    from poco.drivers.android.uiautomation import AndroidUiautomationPoco
    poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
    poco(text="当当").click()
    time.sleep(2)
    poco(text="电子书").click()
    time.sleep(2)
    poco(name="com.dangdang.buy2:id/index_search").click()
    time.sleep(4)
    poco(name="com.dangdang.buy2:id/search_edit_input").set_text('活着')
    time.sleep(2)
    poco(name="com.dangdang.buy2:id/match_item_key").click()
    time.sleep(3)
    poco(name="com.dangdang.buy2:id/review_count_and_rate").click()
    time.sleep(3)
    poco.swipe([0.5, 0.8], [0.5, 0.2])
    time.sleep(3)
    poco.swipe([0.5, 0.8], [0.5, 0.2])
    time.sleep(3)
    poco.swipe([0.5, 0.8], [0.5, 0.2])
    time.sleep(2)
    poco(name="android.widget.TextView").click()
    time.sleep(2)
    while True:
        poco.swipe([0.5, 0.8], [0.5, 0.2])
        time.sleep(2)
  • 相关阅读:
    稳扎稳打Silverlight(68) 5.0 XNA 之绘制 3D 图形
    稳扎稳打Silverlight(65) 5.0绑定之通过 ICustomTypeProvider 绑定动态生成的属性
    千呼万唤 HTML 5 (4) 文本语义元素
    千呼万唤 HTML 5 (8) 画布(canvas)之绘制图形
    稳扎稳打Silverlight(66) 5.0其它之自定义 XAML 扩展标记, 通过 XNA 处理声音效果, 支持矢量打印, 统计连击的次数
    千呼万唤 HTML 5 (9) 画布(canvas)之承载媒体
    梦想成真 XNA (2) 绘制精灵,绘制文字
    千呼万唤 HTML 5 (6) 表单元素之 input 元素
    梦想成真 XNA (10) 3D 模型的碰撞检测
    稳扎稳打Silverlight(64) 5.0绑定之 Style 中的 Setter 支持绑定, 绑定父级链上的元素, 隐式指定数据模板, UI 上数据更新的触发方式
  • 原文地址:https://www.cnblogs.com/tjp40922/p/10800886.html
Copyright © 2020-2023  润新知