【Python】app图片爬取

本文详细介绍了如何通过appium、mitmproxy、fiddler和夜神模拟器抓取app内的图片。在遇到登录异常和请求参数问题后,作者通过mitmproxy执行Python代码实现图片的本地保存,特别提到了edith.xiaohongshu.com的API请求获取文章信息,包括图片URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设想方案:

通过抓包,直接找到相应的链接,然后通过scrapy得到图片或者直接通过appium获得对应的图片

  1. charles

    失败,进入app就报错,说网络错误

  2. fiddler

    失败,同上

    问题所在:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfwpspz6-1647855871013)(picture/image-20220318160859724.png)]

    解决方法:

    通过root权限,将证书放入系统认可处,推荐在模拟器中使用

    具体教程:把 charles,Fiddler 证书安装到安卓根目录,解决安卓微信 7.0 版本以后安装证书也无法抓包问题,需要 root - 宠你的鑫 - 博客园 (cnblogs.com)

  3. appium(appium desktop+appium inspector 因为不知道什么时候分家了,所以这里也卡了一下)

    刚开始使用夜神模拟器,使用模拟器自带的浏览器下载小红书安装包的时候会安装失败,不知道为啥,可能是小红书安装包安装的时候会检测设备??但是之后使用自己电脑上的浏览器下载好安装包之后再拖到模拟器进行安装又能够安装成功。。。

    于是开始后续操作

    查看包信息

image-20220321172932988.png)在这里插入图片描述

appium desktop直接start完事

appium inspector进行相关配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mpl198cV-1647855871014)(picture/image-20220321172932988.png)]

配置:

{
   
  "platformName": "Android",
  "deviceName": "127.0.0.1:62001",
  "platformVersion": "7.1.2",
  "appPackage": "com.xingin.xhs",
  "appActivity": "com.xingin.xhs.activity.SplashActivity"
}

然后start session,之后就是脚本录制了

问题:

1.使用账号密码登录时会提示“登陆异常,请选择验证码登录”--------->使用py程序跑的时候又可以正常跑了。。。。很奇怪

2.登陆成功之后加载主页面时提示:

使用sppium爬取,,,因为每次模拟登录都是用账号,所以没几次就被检测出来了。。。

3.多次重复登录也会出现登陆异常提醒,十分不方便

4.抓包得到的链接无法通过浏览器直接访问(我感觉是和请求链接中的trace_id、unread_begin_note_id、unread_end_note_id、unread_note_count这几个参数有关系,trance_id重大嫌疑!!!)

所以采用后面的最终方案

最终实现方案

appium+mitmproxy+fiddler+夜神模拟器(各环境配置可在网上百度,文章最后附笔者配置所使用的文章地址)

思路:通过fiddler和夜神模拟器抓包分析,得到我们需要的图片url,然后通过mitmproxy来执行我们的python代码(重点!这才是大杀器!!!),实现对图片文件的保存(此处采用本地文件保存,也可采用数据库),

  1. fiddler+夜神模拟器:开始前的准备——抓包分析

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gYeQPB2q-1647855871015)(picture/image-20220318161313303.png)]

    从结果上可以看出,app通过向edith.xiaohongshu.com协参数发送请求得到了我们所需要的文章信息

    具体链接为(edith.xiaohongshu.com/api/sns/v6/homefeed?oid=homefeed_recommend&cursor_score=&geo=eyJsYXRpdHVkZSI6MjMuMDY1NDAxLCJsb25naXR1ZGUiOjExMy45NzU1MDJ9%0A&trace_id=9769d3f8-b3da-377b-8f42-ac4d93eb7134&note_index=0&refresh_type=1&client_volume=0.73&preview_ad=&preview_type=&loaded_ad=%7B%22ads_id_list%22%3A%5B%5D%7D&personalization=1&unread_begin_note_id=622f18dc0000000021035cc3&unread_end_note_id=6214dd1a000000000102ce88&unread_note_count=3&home_ads_id=&user_action=0&is_break_down=0)

    从response可以看出,data下data{}所包含的就是一篇文章的内容

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mc1Jqxpz-1647855871015)(picture/image-20220318161930099.png)]

    在一篇文章中包含了相关信息,其中就有我此次需要的图片(images_list中)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值