使用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 | 2A1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值