ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker如何实现多任务端app应用数据抓取系统

2021-08-15 16:02:48  阅读:162  来源: 互联网

标签:appium -- app 多任务 虚拟机 文件夹 adb docker Docker


一、任务

  • 将编写好的爬虫代码部署到docker环境中,启动3台安卓模拟器(夜神模拟器为例),通过python多进程/多线程分别抓取抖音、快手和今日头条3款app中的数据,然后通过mitmproxy抓包工具解析数据,存入mongodb数据库中

二、搭建步骤

  • Docker中下载mongo、appium/appium、450120127/pythonv2(包含python环境以及mitmproxy环境)镜像

    docker pull mongo
    docker pull appium/appium
    docker pull 450120127/pythonv2
  • 上传python脚本到docker中

    • 设置docker toolbox共享文件夹

      • windows环境下,打开docker虚拟机(Oracle VM VirtualBox),点击设置---共享文件夹---添加共享文件夹---添上共享文件夹路径、共享文件夹名称(自定义比如handle_docker)--勾选固定分配
    • 设置docker toolbox网卡状态为桥接

      • 打开docker虚拟机(Oracle VM VirtualBox),点击设置--网络--网卡1--连接方式--桥接网卡
      • 如果更改为桥接后,虚拟机无法启动,解决办法:
        • 1、升级virtualbox
        • 2、安装驱动
          • 打开网络和共享中心--更改适配器设置--点击上述选择的网卡(比如wlan)--点击属性--网络选项下点击安装--选择<服务>--添加--从磁盘安装--选择virtualbox虚拟机的安装目录下的drivers--network--netlwf下的驱动文件VBoxNetLwf.inf并选择打开,然后点击确定就可以安装上
      • 查看虚拟机ip
        • 点击虚拟机中的--显示
        • 然后在命令行中输入ifconfig | more
    • 将共享文件夹挂载到虚拟机中

      • docker虚拟机中创建一个目录(比如文件夹名docker),用于挂载共享文件夹
        mkdir docker

        pwd后查看该文件夹的路径为:/home/docker/docker

      • 挂载文件夹
        sudo mount -t vboxsf handle_docker /home/docker/docker

        语法:sudo mount -t 【指定文件格式】【 共享文件夹名称】【虚拟机中的挂载路径】,注意不要在挂载文件夹下进行该操作

      • 查看虚拟机中所有挂载的文件夹
        mount
      • 如何取消挂载
        sudo umount /home/docker/docker

        umount后面是虚拟机中的挂载路径

    • 如何修改脚本内容

      • 在本地文件夹修改即可,因为是共享文件夹,所以本地修改以后,docker虚拟机以及容器中的脚本都会相应变化
  • 创建相应容器,并将docker虚拟机中的文件映射到容器中

    • 创建带python环境的容器

      docker run -it -v /home/docker/docker:/root/ --name python -p 450120127/pythonv2 bash

      -v参数后面指定虚拟机和docker容器中的文件路径的映射关系

    • 创建带mitmproxy环境的容器

      docker run --rm -it -v /home/docker/docker:/root/ --name mitmdump -p 8889:8889 450120127/pythonv2 mitmdump -p 8889 -s /root/info_to_db.py

      --rm选项表示容器退出后自动删除

    • 创建appium容器

      docker run --privileged -d -p 4723:4723 --name appium_douyin appium/appium
      docker run --privileged -d -p 4724:4723 --name appium_kuaishou appium/appium
      docker run --privileged -d -p 4725:4723 --name appium_toutiao appium/appium

       也可以只创建一个容器,参考:https://github.com/appium/appium-docker-android

    • 创建mongodb容器

      docker run -d -p 27017:27017 --name mongodb mongo
  • 夜神模拟器操作

    • 网络模式设为桥接模式
    • 安装好相应证书(容器mitmproxy代理的证书)
    • 安装好相应应用(抖音、快手、今日头条)
    • 以上3项设置好以后,分别开启3台模拟器
  • 本地cmd命令行中adb操作

    • 查看连接设备

      adb devices
    • 手动连接设备(上述未查看到设备的情况下)

      adb connect 127.0.0.1:62001
      adb connect 127.0.0.1:62025
      adb connect 127.0.0.1:62026

      夜神模拟器有规律,第一台62001,第二台62025,第3台62026,之后的设备+1

    • 改变设备连接方式(由usb模式改为tcpip模式)

      adb -s 127.0.0.1 62001 tcpip 6666
      adb -s 127.0.0.1 62025 tcpip 6666
      adb -s 127.0.0.1 62026 tcpip 6666

      tcpip后面指定设备的端口号(1-65535之间)

  • appium容器连接设备

    • 3台容器分别连接一台设备

      docker exec -it appium_douyin adb connect 设备ip:6666
      docker exec -it appium_kuaishou adb connect 设备ip:6666
      docker exec -it appium_toutiao adb connect 设备ip:6666

      如果连接错了设备,可通过adb kill-server后重新连接

  • 启动抓取系统

    • 进入python容器,运行爬虫脚本

 

标签:appium,--,app,多任务,虚拟机,文件夹,adb,docker,Docker
来源: https://www.cnblogs.com/eliwang/p/15138583.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有