mitmproxy使用

mitmproxy

安装:

pip install mitmproxy

测试:

mitmdump --version

运行:

mitmweb -s python脚本名.py

adb

介绍:

安卓手机的调试桥,用于操作手机设备

#adb连接夜神模拟器
adb connect 127.0.0.1:62001#夜神模拟器默认端口号
#查看是否连接成功
adb devices

证书配置

手机端

启动 mitmproxy:

mitmweb

证书位置在C:\Users\Administrator.mitmproxy

  1. 将mitmproxy-ca-cert.pem 重命名为:c8750f0d.0

传入手机并进行证书权限操作:

\#传入手机

​	adb push c8750f0d.0/sdcard

​	#获取手机的root权限

​	adbshell

​	#切换管理员

​	su

​	#挂载系统目录为可写

​	mount-orw,remount/

​	mv/sdcard/c8750f0d.0/system/etc/security/cacerts 

​	#修改证书权限

​	chmod644/system/etc/security/cacerts/c8750f0d.0

pc端:

mitmproxy-ca-cert.p12证书:无脑下一步

实战项目:维普期刊

from mitmproxy import ctx

# from lxml import etree
import re
import json


# http://lib.cqvip.com/Qikan/Search/Index?from=index
def response(flow):
    response = flow.response
    # info = ctx.log.info
    # if flow.request.url=='http://m.qikan.cqvip.com/Article/GetArticleList':
    url = flow.request.url
    # if url.startswith('http://qikan.cqvip.com/Search/SearchList'):
    # 'https://mqikan.cqvip.com/Main/GetArticleList'
    print(22222222222222, url)
    # if url.startswith('https://mqikan.cqvip.com/Article/GetArticleList'):
    # http://m.qikan.cqvip.com/Article/GetArticleList?G5tA5iQ4=5zTp0XDWTSkplc8QGZlsU.b6R_ELY6aQcEmgkBwty_py.LqhbG6iCHqatV47o2aDGXYEqa3nw57nIRoOiA7mGDNWYQ6arThIyqdqSEoL6DOzsnbDMYbhUUZTfjVSWPEZVjO2yYhRZ6EvmKxFxwx9O_TnKYGwTRjnjfbRKzigRT0f95K1hw9uuycfIDH7wGocon2AOSkW_NGHu1R.cps9VhqhWKKPXMmlxDU9Aiq0lSN32nrXfsYi.x7TXOFrej3ZFMchri0WgnX3KM_3kdSeTrNfBfnzxdM.QvEpXBXbFR5_4LH3lE0Q6IVe3UfaWIxDXD64fj7zDrlJ7s5eoscd.qRfThQBRHc8wpLSf6RBVVk_SR44juUOYorctMiI76ZKE
    # http://m.qikan.cqvip.com/Article/GetArticleList?G5tA5iQ4=5XCie9JHaeo5fCkCp3lq1xlAuX.E7i4i6WNTR8w91fBAxqI0yfo467.gvBXAi6W5LYfWD.3Xv7tx6WusZHk4PGsYXtNXEG0d4dRw8CA.frXiw3EsWORBa2K8L4mYuRyqSL4yRVKbN5dQFoELqWtJBkbwWMG6R_8YqTXn0SzXyC54gIL01xHvEROLnDCrwLIZsZ9QQlEJG6D4um6BYfkL_n.CRtdg_s0Aki0QZ3X1xVS_qlordcHhyoEC9Sc7RxGhUSHznYbdAh0N7zjRo.nPU36pDml7GLKLya6_GMRYjgXXUiUMsEENF.hGeT9YeIXE0xOnqDi6l4nadGrm6yGruXq
    if url.startswith('https://mqikan.cqvip.com/Article/'):
        print(11111111111111111111)
        with open(f'wp1.txt', 'a+', encoding='utf-8') as f:
            f.write(response.text)
            # for i in json.loads(response.text)['RetValue']:
            #     print(i)
            #     f.write(i['title_c'] + '\n')
            #     # for i in etree.HTML(response.text).xpath('//*[@id="remark"]/dl'):
            #     #       i = ''.join(i.xpath('dt/a//text()'))
            #     #
            #     #
            # f.write('+'*30+'\n')

    # info(str(response.status_code))
    # info(str(response.headers))


# 对于爬虫来说,我们会更加关心响应的内容,因为response
# body才是爬取的结果。对于响应来说,mitmdump也提供了对应的处理接口,就是response()方法。

# from mitmproxy import ctx

# def response(flow):
#     response = flow.response

# info = ctx.log.info
# inf(str(response.status_code))
# info(str(response.headers))
# info(str(response.cookies))
# info(str(response.text))
# 在这里打印输出了响应的状态码status_code、响应头headers、cookies、响应体text这几个属性,其中最重要的是text属性也就是网页的源代码。

AirtestIDE

介绍:

网易的一个测试框架,实现定时模拟手机端操作,进而大规模爬取数据

安装:

pip install airtest
pip install pocoui

使用:

下面选安卓

选项 -> 设置

设置自己的python路径,不然默认用的是python2的环境

点击右上角小摄像机开始记录行为

拖动展示框的网页,模拟拖动(模拟窗口里的网页可能会鬼畜)

**备注:**找公共节点进行拖动

页面会出现这样的代码

#这里加个循环让他循环9次
for i in range(1,10):
poco("android.widget.FrameLayout").offspring("com.android.browser:id/webview

然后点击运行:三角形按钮点击一下

可以在log页面查看是否报错

运行结果:

速度:近似,2秒1条,60秒30条,1小时1800条,一天爬12小时有2万条数据

速度比较慢,但接近于无敌

mitmproxy和fiddler区别

  • mitmproxy:由于其跨平台性和强大的Python支持,非常适合需要高度定制和自动化处理的场景,如API测试、爬虫开发等。 适合用于手机抓包
  • fiddler:则因其直观的图形界面和丰富的功能特性,更适合于日常的网络调试和测试工作,如检查HTTP通讯、设置断点调试等。适合用于电脑抓包
    • fiddler实现图片替换和js代码注入
    • fiddler拦截请求更改参数,重新请求

各爬虫手段的使用场景

  1. selenium 或 Pypeteer
    • 数据在源码里
    • 数据在接口里(Ajax接口将数据动态渲染到网站源码里),不用破解接口,但可能会有滑块验证、验证码验证等类似反爬虫机制
  2. requests 或 scrapy
    • 数据在源码里
    • 数据在接口里(接口返回数据格式为 HTML或JSON),需要破解接口,但不需要面对滑块验证、验证码验证等类似反爬虫机制
  3. mitmproxy 进行手机抓包
    • 适用于数据在接口里,不在源码里,但接口加密很难解
    • 拦截的请求是解密后的数据,基本无敌,可以抓抖音、快手等,除非有些视频是加密的不太好爬

更多编程学习资源

编程学习公众号【程序员论周】

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐