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'] + '\n')
            # 获取用户评论
            content = item['content'].replace(',', '').replace('\n', '')
            print(item['content'] + '\n')
            # 获取用户评论时间
            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('\n')
            # 将获取信息写入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 + '\n')

  利用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)

 

posted @ 2019-05-01 21:44  阿布_alone  阅读(2448)  评论(0编辑  收藏  举报
TOP