使用mitmproxy + appium + python 全自动抓取公众号文章

【转载请注明出处】:https://blog.csdn.net/huahao1989/article/details/106180223

1. 先使用mitmproxy代理抓微信公众号历史文章列表

实现思路:

在电脑上安装 mitmproxy代理,手机和电脑连同一wifi,手机配置当前电脑为代理服务器,然后手动查看公众号历史文章列表,这样电脑上就可以获得列表,然后再根据列表中的详情url拿到公众号文章详情。

1.1 安装mitmproxy

需要先安装Python 3.6 (或更高版本)和 pip3.6 ,之后执行以下命令安装

sudo pip3.6 install -U pip
sudo pip3.6 install mitmproxy
1.2 准备代理脚本wechat_proxy.py

更多的例子可以参考官网simple

# -*- coding: utf-8 -*-
# @Time    : 2019/7/11
# @Author  : zl

from mitmproxy import http
from mitmproxy import ctx
from urllib import parse
import json


def response(flow: http.HTTPFlow):
    try:
        info = ctx.log.info
        req = flow.request
        resp = flow.response
        url = req.url
        purl = parse.urlparse(url)
        param_dict = parse.parse_qs(purl.query)
        host = purl.hostname
        path = purl.path

        if host == 'mp.weixin.qq.com' and path == '/mp/profile_ext':
            action = param_dict['action'][0]
            if action in ['home', 'getmsg']:
                msg = {}
                msg['url'] = url
                msg['action'] = action
                msg['req_header'] = dict(req.headers)
                msg['resp_header'] = dict(resp.headers)
                if action == 'getmsg':
                    msg['resp_body'] = json.loads(resp.content)
                info('msg : %s----' % msg)

    except Exception as e:
        ctx.log.error('wechatproxy error, %s' % e)

执行下面的脚本启动:

mitmdump -p 8888 -s ${script_home}/wechat_proxy.py

手机浏览器访问http://mitm.it/安装证书并启用,然后配置手机代理,翻阅公众号文章列表既可以看到消息日志,文章详情的抓取这里不再介绍

mitmproxy其他的用法可以参考官方文档

2. 使用appium实现自动化

2.1 前提

2.1.1 安装JDK 并设置环境变量

1. 到Java官网下载相应的JDK并安装
2. 设置环境变量
   - 添加JAVA_HOME 
   - 在PATH变量末尾追加 ;%JAVA_HOME%/bin;
   - 添加CLASSPATH,设置值为%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

2.1.2 安装Android SDK 并设置环境变量
注意:安装Android SDK需要翻墙并更新你的SDK repository

1.  到[Android 官网](http://developer.android.com/sdk/index.html#Other)下载并安装SDK
2.  设置环境变量
    - 添加`ANDROID_HOME`
    - 在`path`环境变量值末尾追加:`;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;`

2.1.3 安装Nodejs

#先安装一个node版本管理软件 
brew install n 
#或者
curl -L https://git.io/n-install | bash
#安装node8.6
sudo n 8.6.0
#后面安装的时候有可能没权限
sudo chown -R $(whoami):admin /usr/local/**

注:不要安装太高版本,否则后面安装某些依赖会不兼容。

2.2 安装appium

安装appium有两种方式:

  • 使用 npm (Node js 的管理与分发工具) 安装Appium
  • 使用Appium官方安装包安装

下面只介绍npm安装方式,如果要装desktop,直接去官网下载最新版安装即可。

将npm的下载地址更改为淘宝的NPM镜像源

npm config set registry=https://registry.npm.taobao.org
npm config get registry

确认镜像源替换成功之后执行下面命令安装Appium

npm install -g appium
2.3 安装其他依赖

2.3.1 安装opencv4nodejs
如果已经安装openCV,则需要在安装opencv4nodejs之前设置

export OPENCV4NODEJS_DISABLE_AUTOBUILD=1
export OPENCV_INCLUDE_DIR=/usr/local/include/opencv4
export OPENCV_LIB_DIR=/usr/local/lib
export OPENCV_BIN_DIR=/usr/local/bin

npm安装

npm install -g opencv4nodejs

2.3.2 安装idevicelocation

brew install libzip libplist openssl libimobiledevice
git clone https://github.com/JonGabilondoAngulo/idevicelocation.git
cd idevicelocation
make
sudo make install
  • 遇到问题

    checking for libimobiledevice-1.0 >= 1.2.1... no
    configure: error: Package requirements (libimobiledevice-1.0 >= 1.2.1) were not met:
    Package 'openssl', required by 'libimobiledevice-1.0', not found
    

    解决方法

    ln -s /usr/local/Cellar/openssl/${YOUR_OPENSSL_VERSION}/lib/pkgconfig/* /usr/local/lib/pkgconfig/
    

2.3.3 安装idb 及 idb_companion

brew tap facebook/fb
brew install idb-companion
brew tap cartr/qt4
brew tap-pin cartr/qt4
brew install cartr/qt4/qt@4
pip3.6 install fb-idb
brew install cmake usbmuxd libimobiledevice

执行

$ idb list-targets
...
iPhone X | 569C0F94-5D53-40D2-AF8F-F4AA5BAA7D5E | Shutdown | simulator | iOS 12.2 | x86_64 | No Companion Connected
iPhone Xs | 2A1C6A5A-0C67-46FD-B3F5-3CB42FFB38B5 | Shutdown | simulator | iOS 12.2 | x86_64 | No Companion Connected
iPhone Xs Max | D3CF178F-EF61-4CD3-BB3B-F5ECAD246310 | Shutdown | simulator | iOS 12.2 | x86_64 | No Companion Connected
iPhone Xʀ | 74064851-4B98-473A-8110-225202BB86F6 | Shutdown | simulator | iOS 12.2 | x86_64 | No Companion Connected
..
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 PythonAppium,可以进行移动应用程序的自动化测试。下面是一些基本步骤: 1. 安装 AppiumPython 首先需要安装 AppiumPython,你可以从官网下载并安装。 2. 安装 Appium python 客户端库 安装 Appium python 客户端库,可以通过 pip 命令安装,如下所示: ```sh pip install Appium-Python-Client ``` 3. 配置 Appium 环境 配置 Appium 环境,需要启动 Appium 服务器,可以通过 Appium Desktop 应用程序来启动。 4. 编写测试脚本 编写测试脚本,可以使用 Python 编写自动化测试脚本,使用 Appium 客户端库来操作移动应用程序。例如: ```python from appium import webdriver desired_caps = { "platformName": "Android", "deviceName": "emulator-5554", "appPackage": "com.example.myapp", "appActivity": "MainActivity" } driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) element = driver.find_element_by_id("com.example.myapp:id/button") element.click() driver.quit() ``` 这个例子中,我们使用了 Android 平台,模拟器设备名称为 `emulator-5554`,应用程序包名为 `com.example.myapp`,启动的 Activity 为 `MainActivity`。我们还使用了 `webdriver.Remote` 方法来连接 Appium 服务器,并且使用了 `find_element_by_id` 方法来查找元素,并且使用了 `click` 方法点击按钮。 5. 运行测试脚本 运行测试脚本,可以使用 Python 命令行运行,例如: ```sh python mytest.py ``` 运行测试脚本后,Appium 服务器会自动启动模拟器,并且打开应用程序,并且执行测试脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值