Java 在没有API的情况下,如何获取Android Market数据?

Java 在没有API的情况下,如何获取Android Market数据?,java,android,Java,Android,据我所知,没有API(官方或非官方)来访问Android Market上的应用程序信息(如标题、图标、描述、下载、评论等信息)。然而,还是有一些API设法编译了这些信息 我的问题是:这是如何做到的 两个猜测 手动(不太可能,因为音量太大) 实现官方应用程序使用的协议(通过反编译或观察数据包) 使用官方应用程序运行某种调试器来提取实时数据 使用某种自动化+屏幕截图+文本识别(似乎很复杂) 修改(开放)源代码以写入日志文件 我只是好奇这是怎么做到的,因为我实在搞不懂。谢谢 据我所知,他们正在使用

据我所知,没有API(官方或非官方)来访问Android Market上的应用程序信息(如标题、图标、描述、下载、评论等信息)。然而,还是有一些API设法编译了这些信息

我的问题是:这是如何做到的

两个猜测

  • 手动(不太可能,因为音量太大)
  • 实现官方应用程序使用的协议(通过反编译或观察数据包)
  • 使用官方应用程序运行某种调试器来提取实时数据
  • 使用某种自动化+屏幕截图+文本识别(似乎很复杂)
  • 修改(开放)源代码以写入日志文件

我只是好奇这是怎么做到的,因为我实在搞不懂。谢谢

据我所知,他们正在使用。当手机通过wifi接入市场时,您必须嗅探手机流量。

另一种捕获数据的方法是使用一些自定义图像(如和其他图像)附带的tcpdump工具。您可以捕获所有数据包,然后使用。这条路线比劫持wifi更容易

查看这些精彩的帖子,了解一些事情:


更新我在这方面做了更多的工作,@gsmd是正确的,他们使用上述技术传输信息,您可以捕获数据包。然后你需要深入研究protobuffers来理解消息。

谷歌代码上有一个Java项目,它试图为市场构建一个开源api:

还有一些用于它的JRuby绑定:


然而,它们都需要一个Google/Market帐户,并且API只是部分实现(目前的搜索、评论和图像)。此外,重构的协议缓冲区描述符(market.proto)可用于为Java以外的语言生成绑定。

有一种从开发人员控制台获取数据的非常好的方法。看看:


我把它放在我的树莓皮上,效果非常好。使用bash脚本安装并进一步自动化它非常简单。我真的向任何有兴趣从开发者控制台获取数据的人推荐这个刮板

谷歌最近对此增加了官方支持。报告导出到Google云存储桶


有关更多信息,请参阅。

不幸的是,Google Play Store(以前称为Android Market)仍然没有官方API来访问Android应用程序的元数据(或任何其他统计数据)

如其他答案所述,您可以开发自己的网络爬虫,解析HTML页面并提取所需的应用程序元数据(例如标题、说明、价格等)。本主题已在另一篇文章中介绍

另一种选择是使用基于ProtoBuf的开放源代码库获取应用程序的元数据,此处是指向项目的链接:。 此库代表有效的Google帐户从Google Play获取应用程序元数据,但您仍然需要一个爬虫来“查找”可用的应用程序并计划其元数据检索。另一个开源项目可以帮助您实现以下目标:

如果您不想自己实现所有这些,您可以使用第三方服务通过基于JSON的API访问Android应用程序元数据。例如,(我工作的公司)为Android和iOS提供了一个API,用于检索应用程序的元数据,详情如下:

要获取应用程序的标题、图标、说明和下载,您可以使用“查找”端点,如下所述:

这是“愤怒的小鸟空间高级版”应用程序的JSON响应示例:

或者,我们也有一个数据源转储,可以一次访问所有移动应用程序数据:(在此页面上,您还可以找到用于测试的免费数据样本)

我希望这有帮助,否则请随时与我联系。我非常了解这个话题,可以为你指出正确的方向

问候,


Andrea

他说得对-我反编译了它,他们确实使用协议缓冲区。这合法吗?通过从市场上收集这么多数据,你的帐户会被禁止吗?正如你所知,Java是最容易反编译的程序之一。反编译像Android应用程序这样的Java程序是小菜一碟。只有谷歌,有一个开源项目。嗯。。。看起来很有希望,我用Protobuffers玩了一段时间,但是有一个现成的API帮助很大。一旦信息明确,就可以移植到其他平台,因为Protobuffers是多平台的。我注意到,用它从市场上获取所有数据是行不通的。在多次请求之后,我被阻止了。这真的让我想知道这些网站是如何获得数据的。@agiradello。谢谢你的回答。我可以向你询问更多关于这个话题的信息吗?。或者就我们的开源项目与您联系?@IMAN4K当然可以,请随时给我发邮件:)
{
    "package_name": "com.rovio.angrybirdsspace.premium",
    "title": "Angry Birds Space Premium",
    "description": "Play over 300 interstellar levels across 10 planets...",
    "short_desc": "The #1 mobile game of all time blasts off into space!",
    "rating": 4.3046236038208,
    "category": "Arcade",
    "cat_key": "GAME_ARCADE",
    "cat_keys": [
        "GAME_ARCADE",
        "GAME",
        "FAMILY_EDUCATION",
        "FAMILY"
    ],
    "price": "$1.15",
    "downloads": "1,000,000 - 5,000,000",
    "version": "2.2.1",
    "content_rating": "Everyone",
    "promo_video": "https://www.youtube.com/embed/g6AL9YqRHaI?ps=play&vq=large&rel=0&autohide=1&showinfo=0&autoplay=1",
    "market_update": "2015-07-03T00:00:00+00:00",
    "screenshots": [
        "https://lh3.googleusercontent.com/ZmuBQzIy1G74coPrQ1R7fCeKdJmjTdpJhNrIHBOaFyM0N2EYdUPwZaQjnQUtiUDGmac=h310",
        "https://lh3.googleusercontent.com/Xg2Aq70ZH0SnNhtSKH7xg9jCfisWgmmq3C7xQbx6YMhTVAIRqlRJeH8GYtjxapb_qR4=h310",
        "https://lh3.googleusercontent.com/T4o5-2_UP82sj4fSSegbjrGmslNHlfvtEYuZacXMSOC55-7eyiKySw05lNF1QQGO2FeU=h310",
        "https://lh3.googleusercontent.com/f2ennaLdivFu5cQQaVPKsRcWxB8FS5T4Bkoy3l0iPW9-GDDnTVRhvR5kz6l4m8FL1c8=h310",
        "https://lh3.googleusercontent.com/H-9M03_-O9Df1nHr2-rUdjtk2aeBY3bAxnqSX3m2zh_aV8-K1t0qU1DxLXnK0GrDAw=h310"
    ],
    "created": "2012-03-22T08:24:00+00:00",
    "developer": "Rovio Entertainment Ltd.",
    "number_ratings": 20812,
    "price_currency": "$",
    "icon": "https://lh3.ggpht.com/aQaIEGrmba1ENSEgUtArdm3yhJUug7BRWlu_WaspoJusZyHv1rjlWtYqe_qRjE_Kmh1E=w300",
    "icon_72": "https://lh3.ggpht.com/aQaIEGrmba1ENSEgUtArdm3yhJUug7BRWlu_WaspoJusZyHv1rjlWtYqe_qRjE_Kmh1E=w72",
    "market_url": "https://play.google.com/store/apps/details?id=com.rovio.angrybirdsspace.premium&referrer=utm_source%3D42matters.com%26utm_medium%3Dapi"
}