找回密码
 立即注册

App中的数据可以用网络爬虫抓取么?

| 2023-3-26 11:32 阅读 59768 评论 5

爬取美团,点评,饿 么,百度外卖等App上的开放数据,凡是可以看到的App数据都要可以抓取。
  • 宝石 2023-3-26 11:37
    抓APP和网页一样的,抓包分析,撸代码
  • winyaocom 2023-3-26 11:36
    (#2020-12-01更新见文末,附微信)首先,答案是完全肯定的:凡是可以看到的APP数据都可以抓取。刚好最近有时间,用自身经历回答下吧。本人本科所学专业为金融工程,研究生转学数据挖掘,为课题做调研、帮同学找论文数据也前后抓取过十几个APP,算是有一些经验。可以说其实大部分APP数据都是可以比较容易拿到的(美团、饿了么、抖音、美拍、拼多多、粉笔公考……)。-------------正文分割线-------------其实所谓抓取APP数据和抓取网页数据是存在一定的不同,抓取网页数据可以采用模拟访问网站然后抓取网页接收内容的模式进行数据抓取。而APP则更倾向于通过截获数据传输包的形式进行(Wireshark和Fiddler+Python)。一般来说,我们用WireShark+Fiddler来获取大部分数据是没有多大问题的。但这里有个问题是,如果你碰到的是用SSL/TLS等加密手段加密过的网络数据的时候,往往我们只能束手无策。在过去的话,如果我们拥有的该传输会话的私钥的话我们还是可以将它提供给WireShark来让其对这些加密数据包进行解密的,但这已经是想当年还用RSA进行网络数据加密的年代的事情了。当今大家都已经逐渐拥抱前向加密技术PFS的时代了,所以该方法就不再适用了。因为前向加密技术的目的就是让每个数据交互都使用的是不同的私钥,所以你像以前RSA时代一样想只用一个私钥就能把整个session会话的网络数据包都破解出来的话是不可能的了(其实可以也通过类似浏览器的Session Key功能解决)。-------------案例分割线-------------先举几个最近抓的案例吧,后面放教程:A. 充电网app——一款充电桩查询软件


    充电网app截图

    目标:获取特定地区所有充电站、充电桩的信息(站点名、电桩数量、位置、电压、充电方式、收费信息等等)


    充电网app数据

    B. 在艺app——一款看展览的APP


    在艺app截图

    目标:获取特定地区所有展馆的信息(名称、地址、票价、开放时间、近期展览、评价、活动等等)


    在艺app数据

    C. 天眼查app——一款查询企业工商信息及周边APP


    天眼查app截图

    目标:获取特定企业所有招聘的信息(岗位基础信息及详情、来源等等)


    天眼查app数据

    -----------------教程分割线-----------------下面大概讲一下(假装你已经具备相应基础,手动斜眼):1、假设要抓一款APP,当然是要尽可能全面的获取数据,主要有HTTP/ HTTPS两个协议类型。首先HTTP是比较容易的,我们知道Fiddler是可以拿到HTTPS数据的,就是把Fiddler证书安装到设备中即可。安装过程也很简单:



    2、这样,所有通过目标APP的数据 ,包括HTTPH /TTPS协议数据都能获得了:

    3、wireshark获得目标APP的TCP数据:

    4、通过以上操作可以取得大部分的数据,剩下的就是分析数据的工作了。当然在使用wireshark进行数据的过程中,我们常常会抓到TLS报文,TLS定义为介于TCP和HTTP之间的协议,因此会隐藏HTTP的内容,在我们分析的时候比较不方便,当然也是可以的,就不在这里展开了。5、当然,拿到的原始数据还需要进行大量的清洗工作,形成最终的EXCEL格式(或者存入数据库)更是需要综合运营文件合并去重、格式转换、编码转换、数据分析等操作。
    -----------------正文分割线-----------------#2018-02-27更新:其实爬虫对于前后端都要懂一些,逆向分析、app脱壳、通信协议、编程啥的综合运用起来,我和朋友现在主要研究的就是逆向、脱壳这一块。最近有时间了更新一下抖音、快手app、美团、饿了么app的爬取经验出来。---
    空闲时可接私活,有手机APP抓取、数据挖掘需求的朋友可以私聊或加我微信:HZKLYY。#渣渣zack不常上知乎。 #2020-12-01更新:中间有一段时间太忙了没更新教程。抽空会发布一些最近做的小东西。有朋友反应加不到,因为之前忙给关闭添加了。现在再试试呢。HZKLYY
  • whpc 2023-3-26 11:35
    分析研究过不下300个APP抓包。50%的app,通过抓包软件就可以分析出抓取参数并抓取到信息。30%的app,可能需要适当的反编译,分析出加密算法并抓取到信息。10%的app,可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息。10%的app,通过各式各样的签名,证书,设备绑定等方法,隐藏加密算法。总的来说,没有不能抓取的app,只是时间成本的问题。【更新于20220515】上面是5年前的回答。技术发展很快。现在加密算法越来越复杂,扣算法的难度的越来越大。道高一尺,魔高一丈。Frida技术走起,可以hook函数,做到事半功倍的效果。Frida是APP逆向的首选技术了。【更新于20220713】最近在研究某团,某东的app。普通的抓包软件已经抓到不到主要信息了。因为一般app都是走HTTP/HTTPS协议,某团,某东的app走的TCP协议。
  • aiqi521 2023-3-26 11:34
    关于APP数据采集如何实现,有哪些要注意的点,八爪鱼的黄大仙曾经分享过:八爪鱼采集器:如何实现APP数据采集,还有应该注意哪些点
    以下是直接引用的文章内容:最近半年,我们八爪鱼陆续接到好几个APP数据采集的项目需求,我在群里面,偶尔也看到有些用户在问,有没有APP数据采集的工具。鉴于我们做过的几个APP数据采集项目的经验,我可以告诉大家,现在APP数据采集,市面上还没有通用的工具。我们八爪鱼内部是有一套工具,但由于使用的难度较高,需要编写脚本,所以不对普通用户公开,我们仅接受项目定制。虽然不对外公开,但并不妨碍我们将技术分享出来,APP数据采集,一般走以下两种方式:1、抓包;2、HOOK
    1、抓包有代码经验或APP开发的同学都很容易理解,其实很多APP,走的都是webservice通讯协议的方式,并且由于是公开数据,而且大部分是无加密的。所以只要对网络端口进行监测,对APP进行模拟操作,即可知道APP里面的数据是如何获取的。我们只需要写代码模拟其请求,无论POST还是GET,即可得到该请求所返回的信息。再通过对返回的信息结构化解析,即可得到我们想要的数据。public static void main(String[] args) {

        Spider.create(new GithubRepoPageProcessor())

                //从https://github.com/****开始抓

                .addUrl("https://github.com/****")

                //设置Scheduler,使用Redis来管理URL队列

                .setScheduler(new RedisScheduler("localhost"))

                //设置Pipeline,将结果以json方式保存到文件

                .addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))

                //开启5个线程同时执行

                .thread(5)

                //启动爬虫

                .run();

    }
    以模拟采集“meizu”应用市场为例


    应用市场产品



    抓包返回参数



    整个抓包过程

    2、HOOK技术HOOK技术是一种走操作系统内核的技术,由于安卓系统是开源的,所以可以借助一些框架修改内核,从而实现你要的功能。HOOK的形式,我们走的是Xposed框架。Xposed是一款可以在不修改任何其他开发者开发的应用(包括系统服务)的情况下,改变程序运行的一个开源框架服务。基于它可以制作出许多功能强大的模块,以此来达到应用程序按照你的意愿运行的目的。如果把安卓手机看做一座城堡,那Xposed可以让你拥有一个上帝视角,城里的运作细节尽收你眼底,还能让你插一手改变城堡的运作规律。什么意思呢?简单的说就是你可以通过他,自动化的控制你的APP。如果将我们的APP开在模拟器上,我们可以通过编码,通过他告诉APP这一步干什么,下一步干什么。你把它理解成类似按健精灵或游戏打怪外挂就可以了。而他每走一步,APP与服务端交互的数据,均可获取下来。这种方式广泛用于一些成熟的APP。比如某信采集。
    public class HookActivity implements IXposedHookLoadPackage {

        @Override

        public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {

            final String packageName = lpparam.packageName;

            XposedBridge.log("--------------------: " + packageName);

            try {

                XposedBridge.hookAllMethods

                (Activity.class, "onCreate", new XC_MethodHook() {

                    @Override

                    protected void afterHookedMethod(MethodHookParam param)

                    throws Throwable {

                        XposedBridge.log("=== Activity onCreate: " + param.thisObject);

                    }

                });

            } catch (Throwable error) {

                XposedBridge.log("xxxxxxxxxxxx: " + error);

            }

        }

    }
    其实我们八爪鱼曾经也想开发一款通用的APP数据采集工具,并且两年前在这块投入研究了小半年,我们做出了一款APP采集脚本编辑工具,可以让一款APP的数据采集项目缩减到3-5天即可开发完成。但我们认为,这个工具需要编写脚本一般用户是比较难上手的,所以仅作为内部项目使用。
    以HOOK某APP为例


    HOOK指令打开某APP



    HOOK指令获取数据



    HOOK获取数据过程

    3、这些年走过的坑聊完APP采集的思路,我们跟大家分享一些遇过的坑吧,让大家乐一乐坑一:签名算法以某信的文章列表页及某信息页为例,对其http访问进行抓包,会发现其url的一个核心参数是我们无法知道如何生成的,这就导致,我们不可能直接用该url进行信息爬取;签名算法如果无法破解,HTTP这条路就是死路了。坑二:http爬取回来的信息和页面显示不一致以某信的某信息页为例,对比直接访问某信页面及http爬取的信息,可明显发现http爬取到的信息较少。造成得两种方式都用,才能既照顾速度又照顾完整性。坑三:模拟器中的坑APP自动识别你的运行环境进行屏蔽,最厉害的还是某信,连你是用模拟器打开还是真机打开,是什么内核的,全部进行限制。曾经见过牛人,找某手机厂商专门定做真机来配合。坑四:帐号的坑这个坑就有点大了,要找号、养号,都不是件容易的事情,更惨的是封号,真真让你一夜回到解放前。
    最后附上八爪鱼的下载链接:免费下载 - 八爪鱼采集器
  • 蓝金朝 2023-3-26 11:32
    简答:可以。但前提是你能成功抓包分析出逻辑和api请求,然后才轮到写代码模拟请求去爬取数据而这个前提,往往不是很容易做到越是大厂的app,往往反扒、反破解难度越高最后你发现,其实爬取这些app工作量和难度算100,可能破解占了30%甚至90%详解:如果app本身没加密和反扒难度低简单用抓包工具,比如Charles,去分析网络请求,多数为REST的api,加上合适的header和参数,就可以写代码去爬到数据了如果app本身的请求是https加了密的那么先要破解https,往往是找工具和技术去绕过https,才能看到明文相关工具:Charles+XPosed(+插件:JustTrustMe)+Android虚拟机(Nox夜神模拟器)如何操作:详见完整教程  已root的安卓+XPosed+JustTrustMe破解ssl pinning如果app本身的发送和接收的数据虽然是明文但都是加了密看似乱码,则要找到加密和解密逻辑才可能破解和模拟请求爬取数据就又涉及到 app的加固和去壳方面的技术了如何操作:详见独立教程 安卓应用的安全和破解比如稍微复杂一点的,典型分3步: 三步: app->dex->jar->java
    总结:爬取app数据的工作量和难度:平均来说= 60%的破解 + 10%的抓包分析 + 30%的写爬虫代码-》你只是要爬取app数据,往往变成先要破解app才能爬取其数据
    与爬虫相关:其实写爬虫,要先去搞懂核心逻辑,即下载提取保存然后才是搞清楚,一般写爬虫有哪些典型实现方式:裸写爬虫代码用第三方库写爬虫代码用爬虫框架其次才是,搞清楚常见哪些编程语言,每种编程语言有哪些框架最后才是选用合适语言,合适的方式如果选框架的话,再选合适的框架,去写你的爬虫比如选用Python写爬虫,用PySpider或Scrapy等去爬取你要的数据。
文章点评
2022-04-26 09:16
APP运营 手机GIF动画制作软件哪个好?6款手机GIF制作APP推荐
  我们经常能看到视频做成的GIF动画表情,以前GIF动画智能通过电脑软件制作,不过如 <详情>
2022-04-26 10:02
APP运营 推荐10个超级棒的英语学习APP
现代社会的人,基本上已经没有办法不接触英语了,英语作为世界最通行的语言,就算在国 <详情>
2022-04-26 10:07
APP运营 App开发、小程序开发该如何选择技术开发公司?
术业有专攻。一个好的开发团队对做好一款App至关重要,好的团队会有专业且标准的需求 <详情>
2022-04-26 10:28
APP运营 如何用手机远程协助长辈?我找出了6个最佳方法!(免ROOT ...
最近我婆婆头一次换了部智能手机,难免这也得教那也得教但毕竟没办法随时亲身面授,我 <详情>
2022-04-26 10:46
APP运营 如何在M1的MacBook中安装手机App?| 竟有点实用!
这篇文章的主题其实非常简单,就是在M1的MacBook上安装手机的App。但一开始我觉得这个 <详情>
2022-04-26 10:51
APP运营 推荐16个非常棒的在线学习APP
现在的人们,每天日常生活中,基本上是已经完全离不开手机了,我也经常玩手机,在手机 <详情>
2022-04-26 11:07
APP运营 手机App确实在偷听你谈话,方法死都想不到
早在去年就有用户发现:只要和朋友聊天时提到某样商品,打开购物软件,立刻就会收到相 <详情>
2022-04-26 12:53
APP运营 市场部、运营部、品牌部,别傻傻分不清楚!
摘要:市场、运营、品牌、公关、新媒体、策划……,如何区分这些似是而非的职能,看这 <详情>
2022-04-26 12:56
APP运营 运营知识应该从何学习?
先学理论,再get技能,最后用学到的这些运营理论+技能做出真实有数据的运营项目,完整 <详情>
2022-04-26 13:18
APP运营 搞用户运营的看过来!蔚来、理想、小鹏、威马APP用户 ...
我是做社区运营工作的。上个星期我在面试社区运营的候选人,我问她在国内你认为运营最 <详情>