zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    html基本标签练习
    实践1-qq邮箱主页
    html加强
    Date日期操作
    日期类的加减及java中所以日期类的操作算法大全
    讲解java异常
    关于Java并发编程的总结和思考
    删除map、list集合元素总结
    Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
    Java中的时间日期处理
  • 原文地址:https://www.cnblogs.com/tjp40922/p/10800886.html
Copyright © 2011-2022 走看看